を文字列を分割私は、次の類似したスプリットを実行しようとしています:Groovyの/ Javaは、 "(" 括弧に
println "Hello World(1)".split("W");
出力:
[Hello , orld(1)]
私はこの分割を実行したい:
をprintln "Hello World(1)".split("(");
しかし、わかりました:
このカッコをエスケープする方法はありますか?どんな助けもありがとうございます。
を文字列を分割私は、次の類似したスプリットを実行しようとしています:Groovyの/ Javaは、 "(" 括弧に
println "Hello World(1)".split("W");
出力:
[Hello , orld(1)]
私はこの分割を実行したい:
をprintln "Hello World(1)".split("(");
しかし、わかりました:
このカッコをエスケープする方法はありますか?どんな助けもありがとうございます。
println "Hello World(1)".split("\\(");
それは私のために、ありがとう!私はただ一つの\ –
split
メソッドは正規表現パターンをとります。
あなたは「普通の文字列」に分割したい場合は、最初の文字列を引用するPattern.quote
を使用することができます。
println "Hello World(1)".split(Pattern.quote("("))
または\\( "'、\\( '\ 'に' \( 'をエスケープすると正規表現エンジンは\リテラル括弧 – jedyobidan
これは興味深い..私はこの状況でPattern.quote()を使うことについて考えなかった。良い答えJon –
@jedyobidan:まさにそれは 'Pattern.quote'がやることです - それはあなたが手動で行う必要がないことを意味します... –
あなたが適切
println "Hello World(1)".split("\\(")
groovyのネイティブregex構文を使用する場合は、1つのエスケープを使用することもできます。
assert "Hello World(1)".split(/\(/) == ["Hello World", "1)"]
分割は正規表現を受け入れるだけなので、エスケープ文字として渡す必要があります。このために、あなたはそれ
\(
の前にバックスラッシュを追加しかし、上記の、有効なのような文字をエスケープとして解析されているため、コンパイルエラーを持っている必要があります。だから、
\t Tab
\n New Line or Line Feed
\r Carriage Return
、あなたが渡す必要があります2つのバックスラッシュと非意味の文字(例えば括弧):最後に
\\(
:
println "Hello World(1)".split("\\(");
たりすることもでき引用という名前のクラスパターンのJavaの組み込み機能により、すべての観光名所:
println "Hello World(1)".split(Pattern.quote("("));
あなたはこのようにそれをエスケープする必要があり、 '\\('動作しませんエスケープ – ant
@ant –
ごめんなさいダブルバックスラッシュ – ant