【问题标题】:Scala String trick or method that inserts a new line or other character each time an "|" is placed每次“|”插入新行或其他字符的Scala字符串技巧或方法被放置
【发布时间】:2022-01-15 06:42:47
【问题描述】:

首先,我想为这个问题看起来很含糊深表歉意,但目前我还没有找到任何有关此事的信息。

前段时间,一位同事和我谈起了幺半群和 JSON 解析器,然后他向我展示了一种构造字符串的方法,看起来或多或少像这样(基于我糟糕的记忆力):

strangeMethodOrTrick = {

  | Lorem ipsum dolor sit amet
  | consectetur adipiscing elit
  | sed do eiusmod
  | tempor incididunt

}.toString

有一次他提到,每次“|”输入了字符,这意味着一旦创建了最终的字符串,就会在每行的末尾放置一个换行符。

再次抱歉没有提供有关该主题的更多信息,今天我问了我的同事,但他说他不记得类似的事情或与之相关的任何事情。

就我而言,我也没有找到任何信息,我只记得代码的样子,到目前为止我还没有在 Scala 文档中找到。

如果有人知道这种策略,如果你知道它的名称或我如何找到有关它的更多信息,我将不胜感激。

除此之外,祝大家新年快乐!

【问题讨论】:

  • 好吧,| 的行为是行分隔符实际上是语言的一部分,如您所见 here。然而,并没有。我还没有对此进行测试,您当然应该能够通过像class StringWrapper(s: String) { the override def toString = myStr.split("#").join("\n") } 这样的自己的字符串处理来使用两个不同的字符。也许用隐含的方式清理它,但应该这样做
  • @AluanHaddad 我认为这正是我想要的。非常感谢!
  • 任何时候,先生,很高兴我能帮上忙。虽然我刚刚意识到,但我确实有一个错字。它需要是mkString 而不是join。好久没写 Scala 了。

标签: scala string-formatting


【解决方案1】:

它不是内置功能,也不会插入新的换行符。标准库为字符串stripMargin 提供了一种扩展方法,该方法从字符串的每一行中去除任何前导空格,后跟|

val str = 
  """|multiple lines
     |in one string
     |with stripMargin""".stripMargin

请注意,在调用stripMargin 之前,换行符已经是字符串的一部分,因为我在三引号""" 的帮助下构造了一个多行字符串。 stripMargin 所做的只是删除前导空格和 |

正如您在docs 中看到的,有一个stripMargin 方法,如果您愿意,可以使用| 以外的其他字符调用该方法,例如stripMargin('#').

【讨论】:

  • 就是这样!我对您刚才提到的 stripMargin 方法使用三引号感到困惑;也许这就是为什么我的朋友不知道我在说什么。不管怎样,谢谢你让我记忆犹新,祝你有美好的一天?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2010-10-04
  • 2016-01-22
相关资源
最近更新 更多