The moose likes Beginning Java and the fly likes split string Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "split string" Watch "split string" New topic

split string

dale con
Ranch Hand

Joined: Apr 15, 2005
Posts: 93

I'm trying to split a string (delimited with a pipe)

String s = "this|is|an|example";
String [] results = s.split("|");

String a = results[0]; // here io expect to get 'this'
String b = results[1]; // here io expect to get 'is'

But i'm not gettiong what i expect to get

Can anyone tell mewhere i'm going wrong
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24199

The argument to split() is a regular expression, not just a plain old string. "|" is a special character in Java regular expressions; it represents "or", as in "this or that". Just an "|" alone ought to be an error, I'd think, but apparently it isn't; it seems to mean "nothing or nothing" in this context, so you're getting your string split at every character.

So, how to do this right? Escape the | with a backslash. You also have to protect the backslash with another backlash so that the Java compiler leaves it alone. So altogether, you want to use split("\\|") . This will work as you expect.

[Jess in Action][AskingGoodQuestions]
dale con
Ranch Hand

Joined: Apr 15, 2005
Posts: 93

Forgot about ecasping the pipe
I agree. Here's the link:
subject: split string
jQuery in Action, 3rd edition