您首先将()
其用作分隔符,然后切换到,
,但在提取第一个标记(括号之间的文本)之前进行切换。
你可能打算做的是:
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);
请注意,这两个示例都假定逗号用作分隔符,如您的示例代码中一样(尽管您的问题文本另有说明)