我在扫描仪中使用定界符时遇到问题。我目前正在使用扫描仪读取文本文件,并将令牌放入字符串中。我的导师告诉我使用定界符(useDelimiter(“ \ t | \ n”))。但是,它获取的每个令牌都以/ r结尾(由于文本文件中返回了)。出于打印目的,这很好,但是我需要获取字符串长度。而不是返回实际字符数,而是返回包含该/ r的字符数。我是否可以使用更好的定界符来完成相同的事情(无需获取/ r)?代码如下:
studentData.useDelimiter("\t|\n");
while (studentData.hasNext())
{
token = studentData.next();
int tokenLength = token.length();
statCalc(tokenLength);
}
我很清楚,我可以简单地删除字符串标记的最后一个字符。但是,由于多种原因,我只希望它在没有/ r的情况下获取令牌。任何和所有帮助将不胜感激。
最佳答案
尝试这个:
studentData.useDelimiter("\\t|\\R");
\R
模式匹配任何换行符,请参见documentation。我猜剩下的
\r
字符是Windows环境中的部分消耗的换行符。使用上述定界符,扫描仪将正确使用该行。