对于Regex而言,我还比较陌生,尽管我知道Scala可以在首次出现之前使用替换项的方法,但是我想知道在Scala首次出现后是否有办法摆脱字符串中的项。 >
例如,如果我要使用类似
的字符串
"Hello. W.o.r.l.d"
因此它类似于
"Hello. World"
谢谢。
答案 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>