将字符串标记为字符串数组而不使用Java中的split方法

时间:2015-02-22 18:30:13

标签: java arrays tokenize

如何在不使用java中的split方法的情况下将字符串标记为字符串数组? 例如:

input:    String abc ="dog cat bird fish";
output:   String[] def={"dog","cat","bird","fish"}; 

3 个答案:

答案 0 :(得分:1)

使用StringTokenizer可能最简单:

String abc ="dog cat bird fish";
   StringTokenizer strTok = new StringTokenizer(abc, " ");
   String[] def = new String[strTok.countTokens()];
   int count = 0;
   while(strTok.hasMoreTokens())
   {
       def[count++] = strTok.nextToken();
   }

答案 1 :(得分:1)

您可以使用java中的Pattern api,

private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split

作为替代方案,您可以使用StringTokenizer。

StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
String[] splited = new String[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
    splited[index] = tokens.nextToken();
    ++index;
}

你会编写我自己的标记化器 - 它可能最终比可以查找多个标记的更通用的StringTokenizer更有效,并且你可以使它按照你喜欢的方式运行。对于这样一个简单的用例,它可以是一个简单的实现。

如果它有用,你甚至可以实现Iterable并通过强类型而不是StringTokenizer提供的Enumeration支持获得增强的for-loop支持。如果你想要任何帮助编码这样的野兽,请告诉我 - 这真的不应该太难。

答案 2 :(得分:0)

来自Apache commons-lang3的

StringUtils#split不直接对字符串使用split,尽管拆分操作有点类似于split函数,但没有使用正则表达式。

此处有code供参考