除了Scala中的第一次出现以外,替换字符串中的元素

时间:2019-03-14 01:35:52

标签: regex scala

对于Regex而言,我还比较陌生,尽管我知道Scala可以在首次出现之前使用替换项的方法,但是我想知道在Scala首次出现后是否有办法摆脱字符串中的项。 >

例如,如果我要使用类似

的字符串

"Hello. W.o.r.l.d"
 我将如何删除所有后续的W.

因此它类似于

"Hello. World"

谢谢。

3 个答案:

答案 0 :(得分:4)

不需要花哨的正则表达式。只需 openport("printerName"); setup("80 mm", "51 mm", "4", "15", "0", "3 mm", "0"); clearbuffer(); // LOGO sendcommand("PUTBMP 19,15,\"logo-bmp.BMP\""); printlabel("1", "1"); closeport(); ,然后重新连接即可。

split()

如果文本中只有一个val noDots = "Hello. W.o.r.l.d".split("\\.") val res = noDots.head + "." + noDots.tail.mkString //res: String = Hello. World ,但是如果没有.,则它将正确地工作,它将在字符串的末尾插入一个。

答案 1 :(得分:3)

这是结合使用Regex模式匹配和replace的一种方法:

val s = "Hello. W.o.r.l.d"

val pattern = """(.*?\.)(.*)""".r

s match {
  case pattern(a, b) => a + b.replace(".", "")
  case others => others
}
// res1: String = Hello. World

请注意,如果字符串中没有.,则它将与case others匹配。

答案 2 :(得分:0)

您还可以尝试使用indexOf和子字符串组合

scala> val x = "Hello. W.o.r.l.d"
x: String = Hello. W.o.r.l.d

scala> x.substring(0,x.indexOf(".")+1) + x.split("\\.").tail.mkString
res21: String = Hello. World

scala>