6

私の質問は、正規表現の一致を含む Split stringと同じですが、Scala の場合です。残念ながら、JavaScript ソリューションは Scala では機能しません。

私はいくつかのテキストを解析しています。私はいくつかの文字列を持っているとしましょう:

"hello wold <1> this is some random text <3> foo <12>"

次の Seq: を取得したいと思います"hello world" :: "<1>" :: "this is some random text" :: "<3>" :: "foo" :: "<12>"

<"number"> シーケンスに遭遇するたびに文字列を分割していることに注意してください。

4

2 に答える 2

1

これは簡単ですが、少しハックな解決策です。

scala> val str = "hello wold <1> this is some random text <3> foo <12>"
str: String = hello wold <1> this is some random text <3> foo <12>

scala> str.replaceAll("<\\d+>", "_$0_").split("_")
res0: Array[String] = Array("hello wold ", <1>, " this is some random text ", <3>, " foo ", <12>)

もちろん、このソリューションの問題は、アンダースコア文字に特別な意味を与えたことです。元の文字列で自然に発生すると、悪い結果が得られます。したがって、元の文字列では発生しないことが確実な別の魔法の文字シーケンスを選択するか、さらにエスケープ/エスケープ解除して遊ぶ必要があります。

この質問で説明されているように、別の解決策には、先読みおよび後読みパターンの使用が含まれます。

于 2013-11-14T00:15:42.587 に答える