2013-11-14 30 views
0

我有一個複雜的字符串,我只需要逐個獲取字符串中的每個字符。 這裏我做什麼,但在一個地方我得到兩個/(我知道這是因爲它們之間沒有分隔符我怎樣才能克服這種如何在字符串中使用字符串標記器逐個獲取字符

聽到的是我的字符串:?3 + 4 * 2/(1 - 5)

我的代碼:

StringTokenizer tokenizer = new StringTokenizer(mathExpression , "+-x/()"); 
StringTokenizer tokenizer2 = new StringTokenizer(mathExpression , "123456789"); 

while (tokenizer.hasMoreElements()) {   
    System.out.println(tokenizer.nextToken());    
} 

while (tokenizer2.hasMoreElements()) {    
    System.out.println(tokenizer2.nextToken());    
} 

輸出:

3 
4 
2 
1 
5 
+ 
x 
/(
- 
) 
+2

什麼是mathExpression價值? – MouseLearnJava

回答

0

的StringTokenizer的實例表現在以下兩種方式之一,它是否與具有價值的returnDelims標誌創建取決於 true或false:

•如果標誌是假的,分隔符服務分離令牌。 令牌是連續字符的最大序列,不是 分隔符。

•如果該標誌爲真,則分隔符字符本身被認爲是標記,即 。令牌因此是一個分隔符 字符,或者是不是分隔符的最大連續字符序列。

http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html

StringTokenizer(mathExpression , "+-x/()", true); 
+0

It works Thanks .. :) – CodeSac

0

爲什麼使用StringTokenizer?只是遍歷String

for(int i = 0; i < myString.length(); i++) { 
    char c = myString.charAt(i); 
    // do something with c 
} 

如果你不是在單個字符直接感興趣,但想擁有所有這些一次,你也可以從字符串要求char[]

char[] chars = myString.toCharArray(); 

(請注意,這將返回String-內部char數組的副本,因此如果您只想處理單個字符,則第一種方法可能會減少內存和性能密集型)。

+0

'String.getChars()' – m0skit0

+1

@ m0skit0也許。但通常你想用單個字符做一些事情,所以最後你必須迭代。那麼爲什麼不直接? – isnot2bad

+0

也許,也許不是,我們不知道OP究竟想怎麼處理陣列。 – m0skit0

相關問題