split function splitting on spaces when data contains spaces also

8 views
Skip to first unread message

fugee ohu

unread,
Nov 4, 2018, 4:18:19 PM11/4/18
to Ruby on Rails: Talk
I'm trying to split on spaces but one of the data columns has spaces in it and no quotes around it It's sms exported from my phone  I wanna save them to a table Each line looks like the line below The first is the phone number then the date and time, then the body of the sms message and then a single digit 1 or 2 to indicate if the message was sent or received Looks like between time and message body there's a tab delimeter but the other delimeters are single spaces but then the message body contains single spaces and so does the date and time column How can I split this? 

+2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today? 1

Colin Law

unread,
Nov 4, 2018, 4:52:30 PM11/4/18
to rubyonra...@googlegroups.com
Can't you just use regular expressions to split it up? Like this for example
https://www.oreilly.com/library/view/scala-cookbook/9781449340292/ch01s09.html

Colin
On Sun, 4 Nov 2018 at 21:18, fugee ohu <fuge...@gmail.com> wrote:
>
> I'm trying to split on spaces but one of the data columns has spaces in it and no quotes around it It's sms exported from my phone I wanna save them to a table Each line looks like the line below The first is the phone number then the date and time, then the body of the sms message and then a single digit 1 or 2 to indicate if the message was sent or received Looks like between time and message body there's a tab delimeter but the other delimeters are single spaces but then the message body contains single spaces and so does the date and time column How can I split this?
>
> +2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today? 1
>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/f201139b-f56b-4909-af53-5144e79dbef3%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

botp

unread,
Nov 5, 2018, 7:08:27 AM11/5/18
to rubyonra...@googlegroups.com
On Mon, Nov 5, 2018 at 5:18 AM fugee ohu <fuge...@gmail.com> wrote:
I'm trying to split on spaces but one of the data columns has spaces in it and no quotes around it It's sms exported from my phone  I wanna save them to a table Each line looks like the line below The first is the phone number then the date and time, then the body of the sms message and then a single digit 1 or 2 to indicate if the message was sent or received Looks like between time and message body there's a tab delimeter but the other delimeters are single spaces but then the message body contains single spaces and so does the date and time column How can I split this? 

+2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today? 1

just split it by parts (simpler for me).

eg,
> s="+2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today? 1"
=> "+2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today? 1"
> phone,date,time,remaining=s.split(/\s/,4)
=> ["+2124914028", "06/09/2017", "12:21:56", "Are we meeting up for breakfast today? 1"]

the remaining part is similar.
best regards
--botp

fugee ohu

unread,
Nov 5, 2018, 9:32:09 AM11/5/18
to Ruby on Rails: Talk
Thanks

fugee ohu

unread,
Nov 5, 2018, 9:36:33 AM11/5/18
to Ruby on Rails: Talk
The file was all one line with the data delimited by tabs so i wrote a counter routine to treat every multiple of 5 as 1 Worked but now I have a lot of phone numbers formatted differently +19173320500 (808) 741-1112 7184414411 see what I mean How can I uniform all these phone numbers so they'll list ordered by phone num

Walter Lee Davis

unread,
Nov 6, 2018, 9:06:30 AM11/6/18
to rubyonra...@googlegroups.com
Are the numbers all in the US, or all in another country format? There's an ActiveSupport helper in Rails that can format phone numbers, but it requires that you pass it the country as a parameter (or it defaults to US, I think).

https://api.rubyonrails.org/classes/ActiveSupport/NumberHelper.html#method-i-number_to_phone

Walter

>
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/b609fa47-8895-4681-8829-6edf7098ffdb%40googlegroups.com.

fugee ohu

unread,
Nov 6, 2018, 1:16:56 PM11/6/18
to Ruby on Rails: Talk
Thanks  I used string.gsub(/\D/, ''/) to strip out the non numerics and then string.gsub(/^1/''/) to strip off the leading 1
Reply all
Reply to author
Forward
0 new messages