如何在java中使用字符串标记器从字符串中逐个获取字符

如何在java中使用字符串标记器从字符串中逐个获取字符,java,stringtokenizer,Java,Stringtokenizer,我有一个复杂的字符串,我只需要一个接一个地获取这个字符串中的每个字符。 这里是我所做的,但在一个地方我得到了这两个/(我知道是什么,因为它们之间没有分隔符。我如何克服这一点 Hear是我的字符串:3+4*2/(1-5) 我的代码: StringTokenizer tokenizer = new StringTokenizer(mathExpression , "+-x/()"); StringTokenizer tokenizer2 = new StringTokenizer(mathExpre

我有一个复杂的字符串,我只需要一个接一个地获取这个字符串中的每个字符。 这里是我所做的,但在一个地方我得到了这两个/(我知道是什么,因为它们之间没有分隔符。我如何克服这一点

Hear是我的字符串:
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);