2

scalaを使用して、文字列内の単語の完全一致を置き換えようとしています

"\\bhello\\b".r.replaceAllIn("hello I am helloclass with hello.method","xxx")

output >> xxx I am helloclass with xxx.method

私が欲しいのは、単語がhelloclassとhello.methodのhelloではなく、正確にhelloである場合に置き換えることです

xxx I am helloclass with hello.method

入力文字列が

"hello.method in helloclass says hello"
"hello.method says hello from helloclass"
"hello.method in helloclass says Hello and hello"

出力は

"hello.method in helloclass says xxx"
"hello.method says xxx from helloclass"
"hello.method in helloclass says Hello and xxx"

どうやってやるの?

4

1 に答える 1

4

これは、「単語」をどのように定義するかによって異なります。「単語」が一連の空白文字で文字列を分割したときに得られるものである場合、次のように書くことができます。

"(?<=^|\\s)hello(?=\\s|$)".r.replaceAllIn("hello I am helloclass with hello.method","xxx")

where(?<=^|\\s)は「文字列の先頭または空白が先行する」ことを(?=\\s|$)意味し、「空白または文字列の末尾が続く」ことを意味します。

これは、(たとえば) Tell my wife hello.4 つの「単語」を含む文字列を表示することに注意してください。「単語」をより複雑な方法で定義することでこれに対処できますが、最初に定義する必要があります。hello. hello

于 2012-11-30T20:30:47.330 に答える