【问题标题】:tokenizing input using split使用 split 标记输入
【发布时间】:2014-12-11 15:31:55
【问题描述】:

我正在使用 StringToken 类来标记我的输入,如下所示:

StringTokenizer tokens = new StringTokenizer(input); 
n = tokens.countTokens();
a = tokens.nextToken()

但是,我发现 split 效率更高,有没有办法获取令牌的数量(而不是 countTokens)以及如果我使用 split 获取下一个令牌的方法?

【问题讨论】:

标签: java split token


【解决方案1】:

你可以这样做:

String str = "aa,bb,cc,dd";
String[] token = str.split(",");

System.out.println("Size of tokens: " + token.length);

//Printing out all tokens
for(int x=0; x<token.length; x++)  //A few different ways to print out the token values
    System.out.println(token[x]);

string.split() 方法将返回一个string array。因此,现在您可以将每个标记元素视为字符串数组元素。在上面的代码中,token 只是一个 String 数组。

输出:

Size of tokens: 4
aa
bb
cc
dd

这是你想要的吗?

【讨论】:

  • 以及如果我使用 split 获取下一个令牌的方法
  • 其实我不太明白他说的get next token是什么意思。
  • aa 是第一个令牌。 bb 是第二个令牌。 bb 之后的下一个标记是 cc
  • 我的意思是得到下一个词,就像如果我有 hello world 我需要先得到 hello 然后是 world
  • 不会令牌[0]、令牌[1]..etc 得到你想要的东西吗?我是否错误地解释了您的问题?
【解决方案2】:

这可能就是你要找的东西:

String str = "A,B,C,D";
String[] token = str.split(",");
ArrayList<String> tokList = new ArrayList<String>(Arrays.asList(token));
Iterator<String> tok = tokList.iterator();

while(tok.hasNext())                //Check whether next element exsit
    System.out.print(tok.next());   //Print out the token string 1 by 1

程序输出: ABCD

【讨论】:

    【解决方案3】:

    假设你有String abcd = "a-b-c-d"; 您可以对此进行拆分。你会得到:String[] stringArray = abcd.split("-"); 如果您有 StringArray,则可以使用 stringArray.length 获取大小(并将结果保存到 int。 如果你想获得“下一个令牌”,你可以简单地遍历数组:

    for (int i = 0; i < stringArray.length; i++) {
        String tempString = stringArray[i];
        //do something with the String
    }
    

    这就是你要找的吗?

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 2023-03-11
      • 1970-01-01
      • 2010-11-15
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多