- PR -

*(アスタリスク)でのsplit

1
投稿者投稿内容
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2005-03-16 18:36
String文字列で数式が書かれています。
その数式を、(*,/,+,-)の記号で分割しているのですが、
*(アスタリスク)をsplit することができずに困っています

アスタリスクで区切られた文字列の区切り方を
知ってるかたおられましたらよろしくお願いします。

String[] value;
value = SetText.split("*");

ではエラーとなります・・・。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2005-03-16 18:54
こんなのはどうでしょうか

String src = "1*2*3*4*";
java.util.StringTokenizer strTok = new java.util.StringTokenizer(src, "*");
java.util.List tokens = new java.util.ArrayList();
while (strTok.hasMoreTokens()) {
  tokens.add(strTok.nextToken());
}
String[] values = (String[])tokens.toArray(new String[0]);
jack_pma
常連さん
会議室デビュー日: 2002/11/15
投稿数: 35
お住まい・勤務地: 埼玉
投稿日時: 2005-03-16 19:05
String#splitって、引数は正規表現ですね。
普段何気なく使っていると、デリミタにしたい文字だけ指定(それも正規表現として正しいので動きます)するもんだと思ってしまいますが、そうじゃないわけです。

で、アスタリスクは正規表現では意味のある記号なのでそのままではアスタリスクそのものを意味しません。
コード:

split("\\*");


という具合にエスケープしてあげればよかったかと思います。
また、この場合例外のメッセージに正規表現のエラーである旨書かれていると思います。エラーメッセージとAPIリファレンスは必ず読むようにしておくと楽になれると思いますよ。

[ メッセージ編集済み 編集者: jack_pma 編集日時 2005-03-16 19:07 ]
未記入じゃけんど
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 65
お住まい・勤務地: Osaka City
投稿日時: 2005-03-16 19:15
どうもありがとうございます

あほなこと聞いてすいません。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-16 19:15
引用:

String文字列で数式が書かれています。
その数式を、(*,/,+,-)の記号で分割しているのですが、
*(アスタリスク)をsplit することができずに困っています

アスタリスクで区切られた文字列の区切り方を
知ってるかたおられましたらよろしくお願いします。

String[] value;
value = SetText.split("*");

ではエラーとなります・・・。



+(プラス)ではエラーにならないのですか?
もう回答が出ているので、詳しくは書きませんが、
プラスもエラーになるはずですよ。

引用:

String[] value;
value = SetText.split("[*+-/]");

String[] value;
value = SetText.split("\\*|\\+|-|/");


上記のどっちかでやれば、すべて分割ができますよ。
1

スキルアップ/キャリアアップ(JOB@IT)