用字符串标记符忽略括号?

时间:2010-10-23 08:46:15

标签: java token tokenize stringtokenizer

我的输入看起来像是:(0 0 0)
我想忽略括号,只将数字(在本例中为0)添加到一个arraylist 我正在使用扫描程序从文件中读取这是我到目前为止所拥有的

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

但是,输出看起来像[(0 0 0)]
我想忽略括号

4 个答案:

答案 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);
 }
}