2017-02-06 3 views
2

Ich schreibe eine Regex in scala

val regex = "^foo.*$".r 

dies ist groß, aber wenn ich

var x = "foo" 
val regex = s"""^$x.*$""".r 

jetzt tun möchte, haben wir ein Problem, weil $ mehrdeutig ist. ist es möglich, eine String-Interpolation zu haben und auch eine Regex schreiben zu können?

kann ich so etwas wie

val x = "foo" 
val regex = ("^" + x + ".*$").r 

tun, aber ich habe keine +

Antwort

3

Sie $$ eine wörtliche $ in einer interpolierten Zeichenfolge haben können.

Sie sollten den raw Interpolator verwenden, wenn Sie eine Zeichenfolge in dreifachen Anführungszeichen einschließen, da der s Interpolator die Escape-Sequenzen wieder aktiviert, die Sie womöglich in dreifachen Anführungszeichen interpretieren würden. Es macht keinen Unterschied in Ihrem speziellen Fall, aber es ist gut, daran zu denken.

so val regex = raw"""^$x.*$$""".r

+0

danke! Das vergesse ich immer. –

1

zu tun Mit %s funktionieren sollte.

var x = "foo" 
val regex = """^%s.*$""".format(x).r 

Im Aus-Fall müssen Sie %s einen Regex Begriff sein, tun nur

val regex = """^%s.*%s$""".format(x, "%s").r 
Verwandte Themen