如何在不使用java中的split方法的情况下将字符串标记为字符串数组? 例如:
input: String abc ="dog cat bird fish";
output: String[] def={"dog","cat","bird","fish"};
答案 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)
StringUtils#split
不直接对字符串使用split
,尽管拆分操作有点类似于split
函数,但没有使用正则表达式。
此处有code供参考