- - PR -
正規表現を使わない置換 (JRE1.40で)
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-02-28 07:35
こんにちは。
JRE1.50で開発をしているのですが、文字列に置換で困っています。 文字列の置換には str.replaceall(srcString,dstString)を使用しますよね。 正規表現を無効にして置換する場合、私はstr.replace(srcString,dstString)としていたのですが、実行環境JRE1.40では下記のようなエラーが出てしまいます。 java.lang.NoSuchMethodError: java.lang.String: method replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; not found いろいろ調べると、どうもこのreplaceは1.40では文字単位での置換しかできないみたいです。 こんな感じ>str.replace( 'A','X' ) 1.40で正規表現を使わない文字列置換はできないものでしょうか。 ご存知のかたがいらっしゃいましたら教えてください。 | ||||||||
|
投稿日時: 2006-02-28 08:51
String.replaceAllよりも手間がかかりますが、java.util.StringTokenizer
によって文字列を分割した後、置換後の文字列を付加しながら連結という方法 はどうでしょうか? | ||||||||
|
投稿日時: 2006-02-28 09:34
あるいは、StringBufferを使って自前でちまちま置換するかですね。
| ||||||||
|
投稿日時: 2006-02-28 09:58
普通に標準の正規表現ライブラリを使っちゃだめなんですか?
(「標準の」が抜けてましたね。) [ メッセージ編集済み 編集者: おっきー 編集日時 2006-02-28 17:00 ] | ||||||||
|
投稿日時: 2006-02-28 10:07
こんにちは、さくらばです。
というより、J2SE 1.4 は標準で正規表現が使えるのですから、 正規表現を使えばいいと思うのですが... 参考: http://www.javainthebox.net/laboratory/JDK1.4/NewIO/RegularExpressions/RegularExpressions.html | ||||||||
|
投稿日時: 2006-02-28 10:31
replace()の代わりに使いたいだけなら、replaceFirst()ならどうなんでしょうね。
正規表現を使わない、といっても、 そもそもreplaceAll()は正規表現による置換なんですが。 | ||||||||
|
投稿日時: 2006-02-28 22:30
皆様どうもありがとうございます。
正規表現を使いたくなかった理由は、雑多な文字列を雑多な文字列で置換するので、正規表現に解釈されるとまずかったのです。 replaceFirst()も正規表現を解釈するようですし、TokenizerやStringBufferでちまちまやるしかないみたいですね・・ 或いは変換対象文字列を強制的にエスケープするとか(abc.* → \a\b\c\.\*)? ちょっと試してみます。 | ||||||||
|
投稿日時: 2006-03-01 09:13
こんにちは、さくらばです。
J2SE 5.0 の String#replace(rCharSequence target, CharSequence replacement) も 内部は正規表現を使ってますが... ようするに文字列を正規表現のパターンとしないでそのまま (リテラル) として 扱いたいわけですよね。だったら、次のようなメソッドで文字列をリテラルに変換 してから、Matcher#replaceAll で置換すればいいのではないでしょうか。
[ メッセージ編集済み 編集者: さくらば 編集日時 2006-03-01 09:16 ] |