скала соответствующие группы regex и заменить
val REGEX_OPEN_CURLY_BRACE = """{""".r
val REGEX_CLOSED_CURLY_BRACE = """}""".r
val REGEX_INLINE_DOUBLE_QUOTES = """\"""".r
val REGEX_NEW_LINE = """\n""".r
// Replacing { with '{' and } with '}'
str = REGEX_OPEN_CURLY_BRACE.replaceAllIn(str, """'{'""")
str = REGEX_CLOSED_CURLY_BRACE.replaceAllIn(str, """'}'""")
// Escape " with '"' and n with 'n'
str = REGEX_INLINE_DOUBLE_QUOTES.replaceAllIn(str, """'"'""")
str = REGEX_NEW_LINE.replaceAllIn(str, """'n'""")
есть ли более простой способ сгруппировать и заменить все эти {,},",n
?
3 ответов
вы можете использовать скобки для создания группы захвата и для ссылки на эту группу захвата в заменяющей строке:
"""hello { \" world \" } \n""".replaceAll("""([{}]|\["n])""", "''")
// => java.lang.String = hello '{' '\"' world '\"' '}' '\n'
Вы можете использовать regex группы вот так:
scala> """([abc])""".r.replaceAllIn("a b c d e", """''""")
res12: String = 'a' 'b' 'c' d e
скобки в регулярном выражении позволяют сопоставить один из символов между ними. заменяется тем, что находится между скобками в регулярных выражениях.
считайте, что это ваша строка:
var actualString = "Hi { { { string in curly brace } } } now quoted string : \" this \" now next line \\n second line text"
устранение :
var replacedString = Seq("\{" -> "'{'", "\}" -> "'}'", "\"" -> "'\"'", "\\n" -> "'\\n'").foldLeft(actualString) { _.replaceAll _ tupled (_) }
scala> var actualString = "Hi { { { string in curly brace } } } now quoted string : \" this \" now next line \\n second line text"
actualString: String =
Hi { { { string in curly brace } } } now quoted string : " this " now next line \
second line text
scala> var replacedString = Seq("\{" -> "'{'", "\}" -> "'}'", "\"" -> "'\"'", "\\n" -> "'\\n'").foldLeft(actualString) { _.replaceAll _ tupled (_) }
replacedString: String =
Hi '{' '{' '{' string in curly brace '}' '}' '}' now quoted string : '"' this '"' now next line \'
' second line text
надеюсь, это поможет:)