Results 1 to 3 of 3
- 01-15-2009, 12:48 AM #1
Member
- Join Date
- Jul 2008
- Posts
- 8
- Rep Power
- 0
Problem with delim in StringTokenizer
I am having a problem with StringTokenizer, i would like to delim on a string "->" the problem i am having is the strings i am tokenizing sometimes have a '-' or a '>' in them, and when ever it finds either it counts it as a token, is there a way to force it to use a string to delim or am i going to have to write my own? I have written an example below, any help would be much appreciated.
Code:
Java Code:import java.util.*; class testtoken{ public static void main (String [] args){ int i; String [] testtoken = new String[4]; testtoken[0] = "Test->Token->Test"; testtoken[1] = "Test->To-ken->Test"; testtoken[2] = "Test->To>ken->Test"; testtoken[3] = "Test->To->ken->Test"; for(i = 0; i < testtoken.length; i++){ System.out.println("String: " + testtoken[i]); StringTokenizer st = new StringTokenizer(testtoken[i],"->"); while(st.hasMoreTokens()){ System.out.println("\t" + st.nextToken()); } } } }
Output:
Desired Output:Java Code:String: Test->Token->Test Test Token Test String: Test->To-ken->Test Test To ken Test String: Test->To>ken->Test Test To ken Test String: Test->To->ken->Test Test To ken Test
Java Code:String: Test->Token->Test Test Token Test String: Test->To-ken->Test Test Token Test String: Test->To>ken->Test Test Token Test String: Test->To->ken->Test Test To ken Test
- 01-15-2009, 02:10 AM #2
Senior Member
- Join Date
- Nov 2008
- Posts
- 286
- Rep Power
- 5
Dealing with different delimiters with StringTokenizer is a bit fiddly. StringTokenizer has largely been superseded by the String.split() method, and the regular expressions API in general. Try the following:
In the pattern you pass into split():Java Code:String[] toks = str.split("\\b(-|>|->)\\b");
\\b means a "word boundary"
| means an "alternative"
To find out more, read about Java regular expressions (link is to one of my tutorials; see also the documentation of the Pattern class).Neil Coffey
Javamex - Java tutorials and performance info
- 01-15-2009, 02:44 AM #3
Member
- Join Date
- Jul 2008
- Posts
- 8
- Rep Power
- 0
Thanks Neil, it is now working perfectly!
Output:Java Code:import java.util.*; class token{ public static void main (String [] args){ int i; String [] testtoken = new String[4]; testtoken[0] = "Test->Token->Test"; testtoken[1] = "Test->To-ken->Test"; testtoken[2] = "Test->To>ken->Test"; testtoken[3] = "Test->To->ken->Test"; for(i = 0; i < testtoken.length; i++){ System.out.println("String: " + testtoken[i]); String[] toks = testtoken[i].split("\\b(->)\\b"); for(int t = 0; t < toks.length; t++){ System.out.println("\t" + toks[t]); } } } }
Java Code:String: Test->Token->Test Test Token Test String: Test->To-ken->Test Test To-ken Test String: Test->To>ken->Test Test To>ken Test String: Test->To->ken->Test Test To ken Test
Similar Threads
-
Help with StringTokenizer!
By ookie833 in forum New To JavaReplies: 13Last Post: 12-14-2008, 04:09 PM -
[SOLVED] Questions about StringTokenizer
By miss.meli in forum New To JavaReplies: 2Last Post: 12-03-2008, 08:26 AM -
StringTokenizer
By carderne in forum New To JavaReplies: 1Last Post: 01-26-2008, 08:19 PM -
StringTokenizer
By Java Tip in forum Java TipReplies: 0Last Post: 11-08-2007, 08:48 AM -
StringTokenizer
By Java Tip in forum Java TipReplies: 0Last Post: 11-03-2007, 09:24 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks