如何在java中使用字符串标记器从字符串中逐个获取字符
我有一个复杂的字符串,我只需要一个接一个地获取这个字符串中的每个字符。 这里是我所做的,但在一个地方我得到了这两个/(我知道是什么,因为它们之间没有分隔符。我如何克服这一点 Hear是我的字符串:如何在java中使用字符串标记器从字符串中逐个获取字符,java,stringtokenizer,Java,Stringtokenizer,我有一个复杂的字符串,我只需要一个接一个地获取这个字符串中的每个字符。 这里是我所做的,但在一个地方我得到了这两个/(我知道是什么,因为它们之间没有分隔符。我如何克服这一点 Hear是我的字符串:3+4*2/(1-5) 我的代码: StringTokenizer tokenizer = new StringTokenizer(mathExpression , "+-x/()"); StringTokenizer tokenizer2 = new StringTokenizer(mathExpre
3+4*2/(1-5)
我的代码:
StringTokenizer tokenizer = new StringTokenizer(mathExpression , "+-x/()");
StringTokenizer tokenizer2 = new StringTokenizer(mathExpression , "123456789");
while (tokenizer.hasMoreElements()) {
System.out.println(tokenizer.nextToken());
}
while (tokenizer2.hasMoreElements()) {
System.out.println(tokenizer2.nextToken());
}
输出:
3
4
2
1
5
+
x
/(
-
)
无需重新发明轮子。您只需使用或。为什么要使用
StringTokenizer
?只需重复字符串即可:
for(int i = 0; i < myString.length(); i++) {
char c = myString.charAt(i);
// do something with c
}
(请注意,这将返回字符串
-内部字符数组的副本,因此如果您只想处理单个字符,第一种方法可能会占用更少的内存和性能)
StringTokenizer实例的行为有两种方式之一,具体取决于
是否使用具有以下值的returnDelims标志创建
对或错:
•如果标志为false,分隔符字符用于分隔标记。
标记是不连续的最大连续字符序列
分隔符
•如果标志为true,则分隔符本身为
被认为是标记。因此,标记是一个分隔符
字符,或连续字符的最大序列
不是分隔符
mathExpression的值是多少?@m0skit0可能。但是通常你想用单个字符做一些事情,所以最后你必须进行迭代。那么为什么不直接进行呢?可能,可能不,我们不知道OP实际上想用数组做什么。它是String#tocharray()。我不能使用字符数组,因为我将破坏我的双值,如I.e.67。4@CodeSac您的问题是关于获取字符串的字符:“(…)我只需要逐个获取字符串中的每个字符(…)”!这正是我们答案中的代码所做的!@CodeSac抱歉,您的问题是“我只需要一个接一个地获取这个字符串中的每个字符”,我不知道这些字符实际上有什么相关性。
char[] chars = myString.toCharArray();
StringTokenizer(mathExpression , "+-x/()", true);