Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / December 2007

Tip: Looking for answers? Try searching our database.

String.split() method question?

Thread view: 
au.danji@gmail.com - 17 Dec 2007 03:59 GMT
Hello all, I have a question about the String split method.

I have a string s1:
       String s1 = "a \"single unit\" test";
       String[] strArr = s1.split(" ");

the result is:

strArr[0]: a
strArr[1]: "single
strArr[2]: unit"
strArr[3]: test

but I want to let "single unit" to be in the same array element, just
like this:
strArr[0]: a
strArr[1]: "single unit"
strArr[2]: test

Can anybody tell me how to do that? should I use the regular
expression?
Thanks a lot!
Abhishek - 17 Dec 2007 06:08 GMT
On Dec 17, 8:59 am, "au.da...@gmail.com" <au.da...@gmail.com> wrote:
> Hello all, I have a question about the String split method.
>
[quoted text clipped - 18 lines]
> expression?
> Thanks a lot!

Why don't you try concatenating the two strings after they have been
split?
once you encounter a string "single which starts with quotes, try
concatenating the following strings till you encounter something which
ends with a quote unit" .

Abhishek
Stefan Ram - 17 Dec 2007 06:41 GMT
>        String s1 = "a \"single unit\" test";
>strArr[0]: a
>strArr[1]: "single unit"
>strArr[2]: test
>Can anybody tell me how to do that?

public class Main
{ public static void main
 ( final java.lang.String[] args )
 { java.lang.System.out.println
   ( java.util.Arrays.toString
     ( "a \"single unit\" test".split
       ( "(?: (?=\"))|(?:(?<=\") )" ))); }}

[a, "single unit", test]
au.danji@gmail.com - 17 Dec 2007 14:37 GMT
> "au.da...@gmail.com" <au.da...@gmail.com> writes:
> >            String s1 = "a \"single unit\" test";
[quoted text clipped - 12 lines]
>
> [a, "single unit", test]

Hi, thanks a lot for your help, if I need to split a string like this:
"this is a \"single unit\" test another "second unit" one"
is it possible to get results:

a[0] = this
a[1] = is
a[2] = a
a[3] = single unit
a[4] = test
a[5] = another
a[6] = second unit
a[7] = one

Most appreciate!
Stefan Ram - 17 Dec 2007 15:23 GMT
>"this is a \"single unit\" test another "second unit" one"
>is it possible to get results:
[quoted text clipped - 6 lines]
>a[6] = second unit
>a[7] = one

public class Main
{ public static void main
 ( final java.lang.String[] args )
 { java.lang.System.out.println
   ( java.util.Arrays.toString
     ( "this is a \"single unit\" test another \"second unit\" one".split
       ( "(?<!\"\\w{1,32}) (?!\\w+\")" ))); }}

[this, is, a, "single unit", test, another, "second unit", one]
Hal Rosser - 17 Dec 2007 06:47 GMT
> Hello all, I have a question about the String split method.
>
[quoted text clipped - 18 lines]
> expression?
> Thanks a lot!

If you didn't need to keep the quotes intact with the string, you could
split on the quote.
String[] strArr = s1.split("\"");

I guess you could add the quotes back.
strArr[1] = "\"" + strArr[1] + "\"";
... You could just get the array length and add the quotes to all elements
that do not begin and end with a space.
Since you split the string on the quote marks, the parts of the string that
had quotes around it will probably begin with a regular word character, and
not a space.
Roedy Green - 18 Dec 2007 01:49 GMT
On Sun, 16 Dec 2007 19:59:48 -0800 (PST), "au.danji@gmail.com"
<au.danji@gmail.com> wrote, quoted or indirectly quoted someone who
said :

>Can anybody tell me how to do that? should I use the regular
>expression?

Anything to do with balancing delimiters tends to overamp a regex. You
will have an easier time with a miniature parser instead, perhaps one
you write with indexOf and charAt.

see http://mindprod.com/jgloss/parser.html
http://mindprod.com/jgloss/regex.html

Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.