String 将多行字符串转换为单行

String 将多行字符串转换为单行,string,scala,multiline,String,Scala,Multiline,考虑以下代码段 val myString = """ |a=b |c=d |""".stripMargin 我想把它转换成一行分隔符 a=b;c=d; 我试过了 myString.replaceAll("\r",";") 及 但它不起作用。试试这个 myString.split("\n").filter(_.nonEmpty).mkString("",";",";

考虑以下代码段

val myString =
  """
    |a=b
    |c=d
    |""".stripMargin
我想把它转换成一行分隔符

a=b;c=d;
我试过了

myString.replaceAll("\r",";")

但它不起作用。

试试这个

myString.split("\n").filter(_.nonEmpty).mkString("",";",";")

我尝试了
\n
,效果很好

scala> val myString = """
     | a=b
     | c=d
     | """.stripMargin
myString: String =
"
a=b
c=d
"

scala> myString.replaceAll("\n",";")
res0: String = ;a=b;c=d;

scala> res0.substring(1, myString.length)
res1: String = a=b;c=d;
我希望它能在以下方面有所帮助

哪个输出

;a=b;c=d
Live long and prosper!
或者使用单个空格
作为分隔符

"""
  |Live long
  |and
  |prosper!
  |""".stripMargin.linesIterator.mkString(" ").trim
哪个输出

;a=b;c=d
Live long and prosper!

因为这是谷歌在“Scala多行到一行”上的第一个结果,而且这个问题相当普遍。添加一种隐含方式可能是合理的:

隐式类StringExtensionImplicits(s:String){
def单线:字符串={
单线(“|”)
}
def单线(marginChar:Char):字符串={
s、 条边距(marginChar)。替换('\n','')
}
}
现在您可以:

logger.info(
  """I'm a so long log entry that some devs who like vim don't like me.
    |But you can help them to keep patience.""".singleLine)

使用
\n
而不是
\r
尝试对我不起作用:)请参见下面的我的答案如果您在Windows上,您可能需要两个“\r\n”-它仍然认为它与电传打字机一起工作,如果它不以回车结束一行,您的终端将开始在前一行上键入…是的,但如果我在部署后在Unix框上使用它会怎么样?在本地,它是windows,但在Unix上部署