在Java中,如何识别带有计算字符的开关大小写的换行符?

在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

我有一个开关的情况下,计算每个字符从一些输入。switch case可以计算空格和制表符,但是当它计算换行符时,我似乎找不到它可以使用的case

    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]";