我的输入看起来像是:(0 0 0)
我想忽略括号,只将数字(在本例中为0)添加到一个arraylist
我正在使用扫描程序从文件中读取这是我到目前为止所拥有的
transitionInput = data.nextLine();
st = new StringTokenizer(transitionInput,"()", true);
while (st.hasMoreTokens())
{
transition.add(st.nextToken(","));
}
但是,输出看起来像[(0 0 0)]
我想忽略括号
答案 0 :(得分:3)
怎么样
for(String number: transitionInput
.replace('(', ' ').replace(')', ' ').split("\\s+")){
transition.add(number);
}
答案 1 :(得分: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);
请注意,这两个示例均假设逗号用作分隔符,如示例代码中所示(尽管您的问题文本另有说明)
答案 2 :(得分: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]
答案 3 :(得分: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);
}
}