对于我需要编写的Java程序,我提供了一个字符串,可以按任意顺序包含以下任意数量的单词:char
,double
,int
所以它看起来像这些:
"charintdouble"
"charchar"
"intdoublechardouble"
然后我想按照它们在字符串中出现的顺序将每个单词存储在数组中。因此,"intdoublechardouble"
的输入字符串将产生如下所示的数组:
{"int", "double", "char", "double"}
解析字符串以获取所有单词的最佳方法是什么?
答案 0 :(得分:0)
我首先考虑如何在现实生活中做到这一点,并尝试将其转换为Java算法。对于字符串数组string.split
中的每个元素,字符串{"char", "int", "double"}
的效率稍低,并且string.split
创建的所有标记都按正确的顺序排列。
答案 1 :(得分:0)
如果您需要针对此特定问题的有效解决方案,这应该可以解决问题
public Object extractWords(String s) {
ArrayList<String> array = new ArrayList<String>();
s = s.replace("t", "t,");
s = s.replace("r", "r,");
s = s.replace("e", "e,");
StringTokenizer tokenizer = new StringTokenizer(s, ",");
while (tokenizer.hasMoreTokens()) {
array.add(tokenizer.nextToken());
}
return array;
}
显然,这不会起作用。对于其他情况,我猜你必须通过char遍历输入字符串char并将其与目标单词列表进行比较,如你所建议的那样。
答案 2 :(得分:0)
您可以使用string
的replace和split方法 String str="intdoublechardouble";
str=str.replace("char", "char-").replace("double", "double-").replace("int", "int-");
String[] tokens=str.split("-");
现在代币包含[int, double, char, double]