プロが教えるわが家の防犯対策術!

DBから取得した文字列に半角スペースか全角スペースが
含まれている場合取り除きたい、と考えています。
以下の様なロジックを考えているのですが、
こんな感じで良いのでしょうか。

普通は、どの様にするのでしょうか?
アドバイスなどありましたら、お願い致します。m(__)m


private String test(String str) {
 StringBuffer sb = new StringBuffer();
 char[] chr = str.toCharArray();
 for(int p=0;p<chr.length;p++) {
  if( chr[p] == ' ' || chr[p] == ' ' ) continue;
  sb.append(chr[p]);
 }
 return sb.toString();
}

A 回答 (4件)

String#replaceAll() でいけると思いますが、ご指摘の方法でも問題ないと思います。


http://java.sun.com/j2se/1.4.2/docs/api/java/lan …

私だったら char の配列は作らずに、for文の中で charAt() で毎回1文字ずつとりだす方法もためしてみるかもしれません。可読性もパフォーマンスもあんまかわらないかもしれませんが、実際動かしてみてボトルネックになる箇所であれば色々試して比べてみてはいかがでしょうか。
そうでなければとりあえず「動きゃいい」程度に考えて差し支えないかと。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。
replaceAllメソッドを使って置換する方法や、charAtを使う方法もあるのですね。

作業環境がJDK1.3.1だったため、replaceAllは使えませんでした。
質問する際に、バージョンを書いていませんでした。申し訳ありません。m(__)m

お礼日時:2005/09/01 14:01

>DBから取得した文字列



SQLでやるとか(^^;

(1)
select replace(replace(item01, ' ', ''), ' ', '') as item01
from table001
where ~

(2) Oracle10 だった場合
select regexp_replace(item01, '([  ])+', '') as item01
from table001
where ~

(2)は動作環境がないので確認できません。
    • good
    • 0
この回答へのお礼

なるほど。
SQLでやってしまえばロジックが単純になりそうですね。
ありがとうございます。

お礼日時:2005/09/01 16:46

既に動くサンプルがあっての質問ということはパフォーマンスを気にされてのことでしょうか?


もしかすると indexof でスペースの位置を判別して、その手前までを substring して StringBuffer に append、という繰り返しの方が一文字一文字 append しなくて良い分高速かもしれません。
    • good
    • 0
この回答へのお礼

>既に動くサンプルがあっての質問ということはパフォーマンスを気にされてのことでしょうか?
半角スペース・全角スペースをif分で判断する時に' 'や' 'としているのですが
getBytesメソッドを使って文字コードを見て判断した方が良いのかな?
と思い、普通はどうやるのだろうと不安になったので質問させて頂きました。
パフォーマンスの事はあまり気にしていませんでした。
度々の言葉足らず、申し訳ありませんでした。

お礼日時:2005/09/01 16:44

String aaa が取り除きたい対象の文字列とします。



String kotae = aaa.replaceAll("[  ]", "");

[ ] の中には半角スペース1個と全角スペース一個がはいってます。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
yusukeyさんの返信にも書かせて頂きましたが、私の環境のJDKのバージョンが1.3.1でした。。。
質問する際に、記述すべき情報ですよね。
申し訳ありません。m(__)m

お礼日時:2005/09/01 14:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!