我正在尝试计算字符串输入中的回车次数。我尝试了Scanner
和BufferedReader
。使用Scanner
时,nextLine()
无法获取回车。带next()
的{{1}}查找令牌,例如输入中的空格,以及令牌将输入分开。我希望将整个输入作为单个输入读取。这可能意味着我无法使用Scanner。
使用Scanner
时,BufferedReader
会读取回车符,但不会在输入中返回回车符。如果我使用“reader.read();”然后它告诉我变量user_input是int。 user_input应该是一个可以有整数的字符串输入,但也可能不是。唯一的事情是程序将继续,直到输入包含“/ done”。如果有人能指出我正确的方向,我将不胜感激!
readLine()
答案 0 :(得分:0)
逐个读取字符,直到使用read()
方法遇到EOF。
<强> JAVA DOCS 强>
java中的read()读取任何字符(甚至 \ n , \ r 或 \ r \ n )。这样一个一个地读取字符并检查字符是否在“回车”中读取。
如果是,则增加计数器。
答案 1 :(得分:0)
有一个名为StringUtils的库可以很容易地做到这一点。它有一个名为countMatches
的方法。这是你如何使用它。但首先,您应该将输入组合成一个字符串:
package com.sandbox;
import org.apache.commons.lang.StringUtils;
public class Sandbox2 {
public static void main(String[] args) {
String allInput = "this\nis\na\n\nfew\nlines\nasdf";
System.out.println(StringUtils.countMatches(allInput, "\n"));
}
}
输出“6”。
答案 2 :(得分:0)
这是你要找的吗?
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\\z"); //"\\z" means end of input
String input = scanner.next();
编辑:如果您希望"\n"
显示为"CR"
,请执行以下操作:
input.replaceAll("\\n", "CR");