2010-10-23 70 views
1

我有一個看起來像這樣的輸入:(0 0 0)
我想忽略括號,只將數字,在這種情況下,0添加到arraylist。
我使用掃描儀從文件中讀取,這是我迄今爲止忽略字符串標記器的括號?

transitionInput = data.nextLine(); 
    st = new StringTokenizer(transitionInput,"()", true); 
    while (st.hasMoreTokens()) 
    { 
     transition.add(st.nextToken(",")); 
    } 

但是,輸出看起來像這樣[(0 0 0)]
我想忽略括號

+0

你能給出幾個輸入示例嗎?它只是第一個和最後一個字符,那麼你可以做'input = input.substring(1,input.length() - 1);' – aioobe 2010-10-23 09:17:22

+0

逗號(「,」)在你的令牌規則中做什麼? – Thilo 2010-10-23 09:17:50

回答

2

您首先使用()作爲分隔符,然後切換到,,但提取第一令牌(括號之間的文本)之前進行切換。

什麼你可能打算做的是:

transitionInput = data.nextLine(); 
st = new StringTokenizer(transitionInput,"()", false); 
if (st.hasMoreTokens()) 
{ 
    String chunk = st.nextToken(); 
    st = new StringTokenizer(chunk, ","); 
    while (st.hasMoreTokens()) 
    { 
     transition.add(st.nextToken()); 
    } 
} 

此代碼假定表達總是開頭,並以括號結束。如果是這種情況,您可以使用String.substring()手動刪除它們。此外,你可能要考慮使用String.split()做實際的分裂:

String transitionInput = data.nextLine(); 
transitionInput = transitionInput.substring(1, transitionInput.length() - 1); 
for (String s : transitionInput.split(",")) 
    transition.add(s); 

注意,這兩個示例假設使用逗號作爲分隔符,如示例代碼(雖然你的問題的文本另有規定)

3

如何

for(String number: transitionInput 
     .replace('(', ' ').replace(')', ' ').split("\\s+")){ 
    transition.add(number); 
} 
0

另一個變種

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.StringTokenizer; 


public class simple { 


public static void main(String[] args) 
{ 

    List transition = new ArrayList(); 
    String transitionInput="(0 0 0)"; 
    transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+")); 
    System.out.println(transition); 
} 
} 

輸出:[0,0,0]

0
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 
import java.util.StringTokenizer; 


public class simple { 


public static void main(String[] args) 
{ 

    List transition = new ArrayList(); 
    String transitionInput="(0 0 0)"; 
    transition = Arrays.asList((transitionInput.substring(1,transitionInput.length()-1)).split("\\s+")); 
    System.out.println(transition); 
} 
}