您首先使用()
作爲分隔符,然後切換到,
,但提取第一令牌(括號之間的文本)之前進行切換。
什麼你可能打算做的是:
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);
注意,這兩個示例假設使用逗號作爲分隔符,如示例代碼(雖然你的問題的文本另有規定)
你能給出幾個輸入示例嗎?它只是第一個和最後一個字符,那麼你可以做'input = input.substring(1,input.length() - 1);' – aioobe 2010-10-23 09:17:22
逗號(「,」)在你的令牌規則中做什麼? – Thilo 2010-10-23 09:17:50