2011-11-02 17 views
0

我正在写一些代码,它从文本文件读取输入并打印出令牌及其标签。但是,我遇到了一个问题。如果代码中的字母读,应该最好检查下一个字符,看它是否是另一个字母或特殊字符,例如:检查专业的下一个字符

abcde=123; 

我如何告诉程序向前看,看看下一个字符是另一个字母,等于,数字等。 现在,有没有什么办法,如果语句说'如果下一个字符不是字母,打印'=文本\ n“,否则继续'?

如果这个问题混淆,我很抱歉(这是凌晨1点),我会提供更多的信息。谢谢。

回答

0

您可以检查下一个字符是否不是数字。查看Character API。它有一个方法isDigit()。基本上,如果下一个字符不是数字,那么它可能是特殊字符,空格或字母。

希望这可以帮助你一点!

0

很简单,使用Character.isLetter(character)方法。如果参数是字母,则此方法将返回true,如果不是,则返回false

一个link to documentation on Character

+0

如果你只假设ASCII,你只需要if检查(我会有点惊讶地发现97-122范围内的非字符),但是为什么你会想要假设这样的事情呢?角色方法对于这些东西更好。 – Voo

+0

Voo,我使用'Character.isLetter()'方法进行字母检查。该代码的全部内容,即'Character.isLetter()'检查都是由OP提供的。 – cspray

+0

Voo,注意到OP编辑的问题,所以我编辑了我的答案以删除代码示例,因为它可能会让没有看到OP代码的人感到困惑。 – cspray

0

首先,我会回答你的问题,但后来提供什么我认为这是一个更好的办法来完成你正在做的事情。

如果你换你阅读器中你可以标记你所在的点一个BufferedReader,获得下一个字符,重新跳回到前面的字符,以便在下一次迭代中,你会再次读出的字符:

BufferedReader br = new BufferedReader(reader); 
br.mark(1); 
int firstByte = br.read(); 
br.reset(); 

完成此操作的另一种方法是避免向前看每个字符到一个StringBuilder。然后当你需要整个号码,因为你打到一个非数字,你有StringBuilder中的整个号码。如果您重新使用相同的StringBuilder并在需要时清除它,这应该是有效的。

0

除了其他答案,Java还有一个PushbackInputStream类。有时候这正是处理前瞻型问题所需要的。