在Java中,如何识别带有计算字符的开关大小写的换行符?
我有一个开关的情况下,计算每个字符从一些输入。switch case可以计算空格和制表符,但是当它计算换行符时,我似乎找不到它可以使用的case在Java中,如何识别带有计算字符的开关大小写的换行符?,java,switch-statement,Java,Switch Statement,我有一个开关的情况下,计算每个字符从一些输入。switch case可以计算空格和制表符,但是当它计算换行符时,我似乎找不到它可以使用的case for (int i = 0; i < input.length(); i++) { char curr = input.charAt(i); switch (curr) { case 'a': //does stuff
for (int i = 0; i < input.length(); i++) {
char curr = input.charAt(i);
switch (curr) {
case 'a':
//does stuff
break;
.
.
.
//space case
case ' ':
outputCode = outputCode + curr + " read \n";
break;
//tab case
case ' ':
outputCode = outputCode + curr + " read \n";
break;
//new line case, the issue
case '\n':
break;
default:
outputCode = outputCode + "Error Found at line " + LineNumber + curr + " is an Invalid Character.";
break;
for(int i=0;i
如果它无法识别\n
您可以尝试\r\n
\r
用于回车
不同的操作系统可能使用不同的标准
- 如果您正在使用Windows,请尝试:
\r\n
- 如果您正在使用MAC OS X,请尝试:
\n
- 如果您正在使用MAC OS 9或以前的版本,请尝试:
\r
- 如果您使用的是Unix:
\n
但是,请注意,
\r\n
实际上是2个字符。因此,如果要使用它执行切换,您可能需要切换字符串
:
String ls= System.getProperty("line.separator");
switch (ls){
case "\n": System.out.println("Using Unix / Mac OSX");
break;
case "\r\n": System.out.println("Using Windows");
break;
case "\r": System.out.println("Using Mac OS 9 or previous");
break;
}
我的输出:
Using Windows
新行字符将取决于平台。您可能应该使用-
java.lang.System.lineSeparator()
对于Java7+或
System.getProperty("line.seperator")
返回系统相关的行分隔符字符串。它始终返回相同的值-系统属性line.separator的初始值。
在UNIX系统上,它返回“\n”;在Microsoft Windows系统上,它返回“\r\n”
正如您在windows中看到的,它不会是单个字符。请相应地更改代码。对于windows,新行是
\r\n
您需要添加另一个案例,使\r
什么都不做才能忽略它。您可以借用方法表单java.util.Scanner
类。查看它们:
为了跨平台兼容,请使用而不是硬编码的
\n
。我不确定我是否理解这个问题——你是说你不能创建一个包含\n
字符的输入字符串?输入从何而来?事实上,我相信我们需要更具体的信息,确切地说,问题是。(大多数回答者似乎认为他们知道问题所在,但我打赌他们都错了。)
LINE_SEPARATOR_PATTERN = "\r\n|[\n\r\u2028\u2029\u0085]";