考虑以下代码片段
val myString = """ |a=b |c=d |""".stripMargin
我想将其转换为带有分隔符;的单行
;
a=b;c=d;
我尽力了
myString.replaceAll("\r",";")
和
myString.replaceAll("\n",";")
但没有成功
ipakzgxi1#
我用\n试过了,它很好用。
\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;
希望能帮上忙
pgpifvop2#
基于https://stackoverflow.com/a/25652402/5205022
""" |a=b |c=d |""".stripMargin.linesIterator.mkString(";").trim
其输出
;a=b;c=d
或使用单个空格" "作为分隔符
" "
""" |Live long |and |prosper! |""".stripMargin.linesIterator.mkString(" ").trim
Live long and prosper!
798qvoo83#
因为这是“Scala multiline to a single line”的第一个Google结果,而且这个问题很一般。添加一个隐式方式可能是合理的:
implicit class StringExtensionImplicits(s: String) { def singleLine: String = { singleLine('|') } def singleLine(marginChar: Char): String = { s.stripMargin(marginChar).replace('\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)
wwwo4jvm4#
试试这个
myString.split("\n").filter(_.nonEmpty).mkString("",";",";")
x4shl7ld5#
如果有人想知道如何创建多行字符串:
val myString = "This is " + "my string"
输出为This is my string。您也可以在这里使用s字符串来实现变量
This is my string
laik7k3q6#
你可以用
val myString = """ |a=b |c=d |""".stripMargin.lines.mkString(";")
linesIterator自scala 2.11起已弃用
linesIterator
6条答案
按热度按时间ipakzgxi1#
我用
\n
试过了,它很好用。希望能帮上忙
pgpifvop2#
基于https://stackoverflow.com/a/25652402/5205022
其输出
或使用单个空格
" "
作为分隔符其输出
798qvoo83#
因为这是“Scala multiline to a single line”的第一个Google结果,而且这个问题很一般。添加一个隐式方式可能是合理的:
现在您可以:
wwwo4jvm4#
试试这个
x4shl7ld5#
如果有人想知道如何创建多行字符串:
输出为
This is my string
。您也可以在这里使用s字符串来实现变量laik7k3q6#
你可以用
linesIterator
自scala 2.11起已弃用