tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:特殊文字の"split"

現在表示している画面のURLから"/apex/SamplePage"のような値を取得したくて

getUrl関数で取得してみました。

 

その時に"?"以降のパラメータ部分もくっついてきました。

 

"?"部分以降はいらなかったので"split"関数を使って対応してみたところ

次のようなエラーが発生。

f:id:tyoshikawa1106:20121208121507p:plain

 

そのときの処理がこんな感じです。

String url = ApexPages.currentPage().getUrl();
List<String> urlList = url.split('?', 2);

 

 

あれ・・split って ”?” は対象にできなかったけ・・・。

それとも関数の使い方間違ってる???

 

という感じでいろいろ調べて見たけどよく分からず・・・。

 

 

諦めて他の方法を考えようかと思った時に、他の人に原因を教えてもらいました。

 

"?"とかの特殊文字は次のように書く必要があるとのことです。

List<String> urlList = url.split('\\?', 2);

 

これでバッチリ動きました。

特殊文字はこうやってエスケープしないとダメなんですね。

 

splitで"?"を対象にすることがなかったので意識してなかったです...。

 

ちなみに英語版のDiscussion Boardにも事例があったみたいです。

 

String Split function fails if using a dot as criteria
http://boards.developerforce.com/t5/Apex-Code-Development/String-Split-function-fails-if-using-a-dot-as-criteria/td-p/236733