我在扫描仪中使用定界符时遇到问题。我目前正在使用扫描仪读取文本文件,并将令牌放入字符串中。我的导师告诉我使用定界符(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环境中的部分消耗的换行符。使用上述定界符,扫描仪将正确使用该行。

09-11 17:51