- PR -

文字変換について

投稿者投稿内容
mami
会議室デビュー日: 2003/11/22
投稿数: 11
投稿日時: 2003-12-01 16:38
mydata の中に "”"(全角”)があったら"qu"に変換したいのですが
どう書けばよいかわかりません。
どなたか教えてください。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-01 16:47
mydataって何ですか?
String型の文字列ですか?
もうちょっと詳しく書いてください。

Stringなら、String#replaceを使います。
Emacs信者
常連さん
会議室デビュー日: 2003/08/10
投稿数: 38
投稿日時: 2003-12-01 16:53
String.replaceXXX(String,String)というものがありますが、
これはJDK1.4からのメソッドですよね。しかも正規表現ですし。

もし、JDK1.3以前のJDKをお使いなら、
org.apache.commons.lang.StringUtils.replaceなどを
使うのがいいと思います。

まあ、"mydata"が文字列ならの話ですけど…

[ メッセージ編集済み 編集者: Emacs信者 編集日時 2003-12-01 16:55 ]
mami
会議室デビュー日: 2003/11/22
投稿数: 11
投稿日時: 2003-12-01 16:57
すみません。
string 型 です。
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2003-12-01 17:00
自分で一度考えてから質問をされることをお勧めします。
皆、子供の宿題を全部解いてやる過保護な大人になってしまう。

もし何かしら試したあとでしたらその内容も添えて質問しましょう。
やりたいことが的確に伝わります。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-01 17:07
String#replaceはchar→char置換でした。
いい加減なこと書いてすみません。

普通にやるとしたら、
コード:
String mydata = "...";
String target = "”";
int idx = mydata.indexOf(target);
if ( idx != -1 ){
    StringBuffer buf = new StringBuffer(mydata);
    buf.replace(idx, idx + target.length(), "qu");
    mydata = buf.toString();
}


って感じかな。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-12-01 17:20
ご存知だと思いますがStringオブジェクトは、それが参照する文字列を変更することはできません。
従って、例えば

コード:
String mydata = new String("ABCDEDCBA");

System.out.println(mydata);
System.out.println(mydata.replace('A', 'Z'));
System.out.println(mydata);


とやると、結果は

ABCDEDCBA
ZBCDEDCBZ
ABCDEDCBA

となり、mydataの参照する文字列は変更されません。

一応念のため^^;

#変な用語を使ってしまったので修正しますた

[ メッセージ編集済み 編集者: たーぞう 編集日時 2003-12-01 17:47 ]
mami
会議室デビュー日: 2003/11/22
投稿数: 11
投稿日時: 2003-12-01 17:53
コード:
--------------------------------------------------------------------------------

String mydata = "...";
String target = "”";
int idx = mydata.indexOf(target);
if ( idx != -1 ){
StringBuffer buf = new StringBuffer(mydata);
buf.replace(idx, idx + target.length(), "qu");
mydata = buf.toString();
}


だと、mydataの中にtargetがいくつも存在するときに
最初のtargetのみ変換されるのですが
mydataの中のtargetをすべて変換したい場合は
do ( idx == -1 ){
StringBuffer buf = new StringBuffer(mydata);
buf.replace(idx, idx + target.length(), "qu");
mydata = buf.toString();
}

とやるのでしょうか??

すみません、初心者で。

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