Discussion:
[Rails] split function splitting on spaces when data contains spaces also
fugee ohu
2018-11-04 21:18:19 UTC
Permalink
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@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.
Colin Law
2018-11-04 21:51:41 UTC
Permalink
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
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 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.
--
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLu%3D5A7xOmSrHS0QuH-Sy6tcfi3kfO%3D2pQ%3DABLTqC81y8A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
fugee ohu
2018-11-05 14:36:32 UTC
Permalink
Post by Colin Law
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
Post by fugee ohu
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?
Post by fugee ohu
+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.
Post by fugee ohu
To unsubscribe from this group and stop receiving emails from it, send
<javascript:>.
Post by fugee ohu
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/f201139b-f56b-4909-af53-5144e79dbef3%40googlegroups.com.
Post by fugee ohu
For more options, visit https://groups.google.com/d/optout.
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
--
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@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.
For more options, visit https://groups.google.com/d/optout.
Walter Lee Davis
2018-11-06 14:05:47 UTC
Permalink
Post by Colin Law
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
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 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.
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
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
Post by Colin Law
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/b609fa47-8895-4681-8829-6edf7098ffdb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6462A392-0336-4898-8DE2-77BD971B005F%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.
fugee ohu
2018-11-06 18:16:55 UTC
Permalink
Post by Colin Law
Post by Colin Law
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
Post by Colin Law
Colin
Post by fugee ohu
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?
Post by Colin Law
Post by fugee ohu
+2124914028 06/09/2017 12:21:56 Are we meeting up for breakfast today?
1
Post by Colin Law
Post by fugee ohu
--
You received this message because you are subscribed to the Google
Groups "Ruby on Rails: Talk" group.
Post by Colin Law
Post by fugee ohu
To unsubscribe from this group and stop receiving emails from it, send
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/f201139b-f56b-4909-af53-5144e79dbef3%40googlegroups.com.
Post by Colin Law
Post by fugee ohu
For more options, visit https://groups.google.com/d/optout.
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
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
Post by Colin Law
--
You received this message because you are subscribed to the Google
Groups "Ruby on Rails: Talk" group.
Post by Colin Law
To unsubscribe from this group and stop receiving emails from it, send
<javascript:>.
Post by Colin Law
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/b609fa47-8895-4681-8829-6edf7098ffdb%40googlegroups.com.
Post by Colin Law
For more options, visit https://groups.google.com/d/optout.
Thanks I used string.gsub(/\D/, ''/) to strip out the non numerics and
then string.gsub(/^1/''/) to strip off the leading 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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/407d71ce-35cc-4d40-b42c-53f033255664%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
botp
2018-11-05 12:07:23 UTC
Permalink
Post by fugee ohu
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,
Post by fugee ohu
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"
Post by fugee ohu
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
--
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAAwHHQhDkcPQxaqDS4RKDSMqbFEgW%3DW4SZ427bm14xo5%2BXRPkA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
fugee ohu
2018-11-05 14:32:08 UTC
Permalink
Post by botp
Post by fugee ohu
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,
Post by fugee ohu
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"
Post by fugee ohu
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
Thanks
--
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-talk+***@googlegroups.com.
To post to this group, send email to rubyonrails-***@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/484bec01-c123-4ab8-855f-f0106923d98b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Loading...