By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,805 Members | 1,056 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,805 IT Pros & Developers. It's quick & easy.

Having trouble with a .split("\\") method.

blazedaces
100+
P: 284
Hello again. I'm trying to take as an input an ArrayList<String> and utilize String's .spit(delimiter) method to turn that into a String[][]. I'm getting some kind of error though (I'll post the code and error lower down).

Here's a simple example:

Expand|Select|Wrap|Line Numbers
  1. Input ArrayList would be:
  2. ArrayList<String> temp = new ArrayList<String>(2);
  3.         temp.add("headerTest\\headerSectionTest\\");
  4.         temp.add("headerTest\\start-time\\sameLastPartTest");
  5.         temp.add("headerTest\\end-time\\sameLastPartTest");
  6.         temp.add("DataTest\\TimeTest\\");
  7.         temp.add("DataTest\\PieceOfDataTest\\");
  8.  
  9. The String[][] that I want would be (assuming my code works):
  10. String[][] splittedStrings = new splittedStrings[temp.size()][];
  11. splittedStrings[0] = { "headerTest", "headerSectionTest" };
  12. splittedStrings[1] = { "headerTest", "start-time", "sameLastPartTest" };
  13. splittedStrings[2] = { "headerTest", "end-time", "sameLastPartTest" };
  14. splittedStrings[3] = { "DataTest", "TimeTest" };
  15. splittedStrings[4] = { "DataTest", "PieceOfDataTest" };
  16.  
Here's my code (main method and the table implementation method where I'm using the .spit("\\") method):

Expand|Select|Wrap|Line Numbers
  1.     public static void main(String args[]) {
  2.         ArrayList<String> temp = new ArrayList<String>(2);
  3.         temp.add("headerTest\\headerSectionTest\\");
  4.         temp.add("headerTest\\start-time\\sameLastPartTest");
  5.         temp.add("headerTest\\end-time\\sameLastPartTest");
  6.         temp.add("DataTest\\TimeTest\\");
  7.         temp.add("DataTest\\PieceOfDataTest\\");
  8.  
  9.         runTCW rTCW = new runTCW(temp);
  10.         rTCW.start();
  11.         try {
  12.             rTCW.join();
  13.         } catch (InterruptedException e) {
  14.             e.printStackTrace();
  15.         }
  16.     }
  17.  
Expand|Select|Wrap|Line Numbers
  1. public MyTableModel(ArrayList<String> al) {
  2.             numRows = al.size();
  3.             data = new Object[numRows][numCols];
  4.  
  5.             String[][] tagsSeparated = new String[numRows][];
  6.  
  7.             for (int i = 0; i < numRows; i++) {
  8.                 tagsSeparated[i] = al.get(i).split("\\"); //This is where the error is reported, where I use the .split("\\") method
  9.             }
  10.  
  11.             for (int i = 0; i < numRows; i++) {
  12.                 data[i][0] = new Boolean(true);
  13.  
  14.                 data[i][1] = al.get(i);
  15.  
  16.                 data[i][2] = al.get(i);
  17.                 Utilities.print(tagsSeparated[i]);
  18.  
  19.                 data[i][3] = al.get(i);
  20.             }
  21.         }
  22.  
And the error it spits out:

Expand|Select|Wrap|Line Numbers
  1. Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
  2. \
  3.  ^
  4.     at java.util.regex.Pattern.error(Pattern.java:1700)
  5.     at java.util.regex.Pattern.compile(Pattern.java:1453)
  6.     at java.util.regex.Pattern.<init>(Pattern.java:1130)
  7.     at java.util.regex.Pattern.compile(Pattern.java:822)
  8.     at java.lang.String.split(String.java:2293)
  9.     at java.lang.String.split(String.java:2335)
  10.     at TagChoosingWindow$MyTableModel.<init>(TagChoosingWindow.java:210)
  11.     at TagChoosingWindow.<init>(TagChoosingWindow.java:39)
  12.     at runTCW.<init>(runTCW.java:14)
  13.     at TagChoosingWindow.main(TagChoosingWindow.java:157)
  14.  
  15. Process completed.
  16.  
I don't completely understand this error. Any and all help is much appreciated.

-blazed
Jul 27 '07 #1
Share this Question
Share on Google+
12 Replies


10K+
P: 13,264
You need four backslashes to match \ because it is a special-special character.
Jul 27 '07 #2

Expert 10K+
P: 11,448
You need four backslashes to match \ because it is a special-special character.
Just to elaborate on r025198x's awfully correct and awfully terse reply:

Suppose you want to split on a single backslash; you have to escape it with
another backslash because (as r035198x already correctly wrote), the backslash
is a special character for the regular expression compiler.

If you want to supply that regular expression as a literal String, you have to get
it past the Java compiler too but javac considers a backslash character as a
special character as well, so basically you want to get two backslashes past
javac; that takes one extra backslash each:

Expand|Select|Wrap|Line Numbers
  1. \\\\
  2.  
after javac munched on this string, all that is left is this:

Expand|Select|Wrap|Line Numbers
  1. \\
  2.  
and this is what the regular expression compiler turns it into

Expand|Select|Wrap|Line Numbers
  1. \
  2.  
I deliberately left out the double quotes for no particular reason just to emphesize
on what both compilers actually see and work on.

kind regards,

Jos
Jul 27 '07 #3

10K+
P: 13,264
Just to elaborate on r025198x's awfully correct and awfully terse reply:

Suppose you want to split on a single backslash; you have to escape it with
another backslash because (as r035198x already correctly wrote), the backslash
is a special character for the regular expression compiler.

If you want to supply that regular expression as a literal String, you have to get
it past the Java compiler too but javac considers a backslash character as a
special character as well, so basically you want to get two backslashes past
javac; that takes one extra backslash each:

Expand|Select|Wrap|Line Numbers
  1. \\\\
  2.  
after javac munched on this string, all that is left is this:

Expand|Select|Wrap|Line Numbers
  1. \\
  2.  
and this is what the regular expression compiler turns it into

Expand|Select|Wrap|Line Numbers
  1. \
  2.  
I deliberately left out the double quotes for no particular reason just to emphesize
on what both compilers actually see and work on.

kind regards,

Jos
Don't you dare disrespect me by calling me r025198x. I've long since moved up to the r03 class.
Jul 27 '07 #4

Expert 10K+
P: 11,448
Don't you dare disrespect me by calling me r025198x. I've long since moved up to the r03 class.
Sorry, that's what your name looks like in my private unodecosimal radix number
system. It's quite a complicated system so I'll explain it some other time ;-)

kind regards,

Jos
Jul 27 '07 #5

10K+
P: 13,264
Sorry, that's what your name looks like in my private unodecosimal radix number
system. It's quite a complicated system so I'll explain it some other time ;-)

kind regards,

Jos
You need to upgrade your system then. It's probably version 0.1 and is written in Fortan right?
Jul 27 '07 #6

blazedaces
100+
P: 284
It worked obviously. Thank you so much for the help, both of you.

-blazed
Jul 27 '07 #7

10K+
P: 13,264
It worked obviously. Thank you so much for the help, both of you.

-blazed
One more post blazed, and you're seating pretty on 200 posts. I'll see If I can get a present for you.
Jul 27 '07 #8

blazedaces
100+
P: 284
One more post blazed, and you're seating pretty on 200 posts. I'll see If I can get a present for you.
It's funny you should say that, my birthday was last monday... my friends got me Frank Miller's (guy who wrote sin city comics) Comic of 300 (300 is only one digit off of 200, funny eh? Not really...). I didn't even know that movie was based on a comic. I really enjoyed it...

Anyway, ya, thanks, didn't even notice my post count was getting there...

Well to the brave 200 ... eh ... 300 ... eh ... whatever,

-blazed
Jul 27 '07 #9

Expert 10K+
P: 11,448
A bit belated but nevertheless: Happy Birthday to you.

kind regards,

Jos
Jul 27 '07 #10

blazedaces
100+
P: 284
A bit belated but nevertheless: Happy Birthday to you.

kind regards,

Jos
Thank you good sir.

-blazed
Jul 27 '07 #11

P: 1
Thank you both for answering and explaining the problem. Saved me a lot of time!

Regards,

Matt
Apr 13 '08 #12

10K+
P: 13,264
Thank you both for answering and explaining the problem. Saved me a lot of time!

Regards,

Matt
Thanks for the thanks.
Apr 14 '08 #13

Post your reply

Sign in to post your reply or Sign up for a free account.