File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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

Win a copy of RabbitMQ in Depth this week in the Open Source forum!
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: 24189

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