2017-04-18 13 views
-1

Javaで文字列をドット( "。")で区切りたいのですが、JavaのStringのsplit関数が正規表現を使用していることを知っていますので、someString.split("\.")を使用して特殊文字 "。"をエスケープしましたが、作業;私はsomeString.split("\\.")を試してみました。" t"はJava String.splitでは動作しますが、 "。"では動作しないのはなぜですか?

前にsplit("\t")を使用して、タブで文字列を分割していました。なぜ特別な文字'\t'split("\\t")のようにエスケープする必要はないのですか?

+0

@ErwinBolwidt:私に思い出させてくれてありがとう。多くの言語、多くの*わずかな*異なる規則...: –

+0

詳細については、リンクされた質問の回答を見てください。しかし、 "\"と\ "\ t" 'の間の二分法を再考してください。文字列リテラルでは '\ .'は無効なエスケープシーケンスですが、文字列リテラルでは' \ t'はタブ文字です。タブ文字は正規表現で特別なものではないので、 'split(" \ t ")'はタブを分割します。背後にある正規表現にバックスラッシュを渡すには(正規表現では特別なので '.'をエスケープすることができます)、文字列に実際のバックスラッシュを入れる必要があります。もちろん、それをエスケープする必要があります(' "\ \ "")。 –

答えて

1

split関数は実際の文字列と一致するため、文字列 "\ t"ではなくタブ文字を検索したいので "\ t"をエスケープする必要はありません(どちらの\\ t "達成するだろう)。

関連する問題