New line character in Scala

后端 未结 6 1922
既然无缘
既然无缘 2021-01-01 13:08

Is there a shorthand for a new line character in Scala? In Java (on Windows) I usually just use \"\\n\", but that doesn\'t seem to work in Scala - specifically



        
相关标签:
6条回答
  • 2021-01-01 13:30

    A platform-specific line separator is returned by

    sys.props("line.separator")
    

    This will give you either "\n" or "\r\n", depending on your platform. You can wrap that in a val as terse as you please, but of course you can't embed it in a string literal.

    If you're reading text that's not following the rules for your platform, this obviously won't help.

    References:

    • scala.sys package scaladoc (for sys.props)
    • java.lang.System.getProperties javadoc (for "line.separator")
    0 讨论(0)
  • 2021-01-01 13:30

    Try this interesting construction :)

    import scala.compat.Platform.EOL
    println("aaa"+EOL+"bbb")
    
    0 讨论(0)
  • 2021-01-01 13:35
    var s = """abcd
    efg""".stripMargin.replaceAll("[\n\r]","")
    
    0 讨论(0)
  • 2021-01-01 13:40

    If you're sure the file's line separator in the one, used in this OS, you should do the following:

    s.replaceAll(System.lineSeparator, "")
    

    Elsewhere your regex should detect the following newline sequences: "\n" (Linux), "\r" (Mac), "\r\n" (Windows):

    s.replaceAll("(\r\n)|\r|\n", "")
    

    The second one is shorter and, I think, is more correct.

    0 讨论(0)
  • 2021-01-01 13:47

    Your Eclipse making the newline marker the standard Windows \r\n, so you've got "abcd\r\nefg". The regex is turning it into "abcd\refg" and Eclipse console is treaing the \r slightly differently from how the windows shell does. The REPL is just using \n as the new line marker so it works as expected.

    Solution 1: change Eclipse to just use \n newlines.

    Solution 2: don't use triple quoted strings when you need to control newlines, use single quotes and explicit \n characters.

    Solution 3: use a more sophisticated regex to replace \r\n, \n, or \r

    0 讨论(0)
  • 2021-01-01 13:48

    Use \r\n instead

    Before:

    before

    After:

    after

    0 讨论(0)
提交回复
热议问题