-PR-
解決
済み

文字列の置換

  • 困ってます
  • 質問No.59679
  • 閲覧数580
  • ありがとう数8
  • 気になる数0
  • 回答数9
  • コメント数0

お礼率 13% (21/151)

JAVAであるファイル内の文字列を置換するプログラム(日本語)を作りたいのですが、



String h_s;
FileReader h_fr = new FileReader(in_filename);
BufferedReader h_br = new BufferedReader(h_fr);
while(true){
 h_s = h_br.readLine();
 if (h_s == null){
  break;
 }
 ●文字列を置換するプログラム●
}



ここの●文字列を置換するプログラム●にあたる適当な関数って何かありますか?
たとえばperlでいうと↓みたいなものなのですが・・・
s/置換前文字/置換後文字/g
よろしくお願いします。
通報する
  • 回答数9
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル10

ベストアンサー率 21% (28/132)

何度もすみません。
改良しました。

public String replace (String s,String s2,String s3) //I don't know that this works with Japanese...
{
int start_number = 0;
while (s.indexOf (s2,start_number) >= 0)
{
s = s.substring (0,s.indexOf (s2,start_number)) + s3 + s.substring (s.indexOf (s2,start_number) + s2.length (),s.length ());
start_number = s.indexOf (s2,start_number) + s3.length ();
}
return s;
}
-PR-
-PR-

その他の回答 (全8件)

  • 回答No.2
レベル10

ベストアンサー率 21% (28/132)

今、即席で作ってみました。日本語に対応しているかは分からないのですが、一応。 public String replace (String s,String s2,String s3) //I don't know that this work with Japanese... { while (s.indexOf (s2) >= 0) { s = s.substring ...続きを読む
今、即席で作ってみました。日本語に対応しているかは分からないのですが、一応。

public String replace (String s,String s2,String s3) //I don't know that this work with Japanese...
{
while (s.indexOf (s2) >= 0)
{
s = s.substring (0,s.indexOf (s2)) + s3 + s.substring (s.indexOf (s2) + s2.length (),s.length ());
}
return s;
}

//s = テキスト s2=検索する文字 s3=置き換える文字


  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

Java は良く知らないのですが、正規表現って無いみたいですね。 ただ、正規表現を扱うパッケージは探せばあるみたい。 例えば GNU だったら、参照URLのところに。 javascript にはあるのにね。 ...続きを読む
Java は良く知らないのですが、正規表現って無いみたいですね。

ただ、正規表現を扱うパッケージは探せばあるみたい。
例えば GNU だったら、参照URLのところに。

javascript にはあるのにね。
  • 回答No.3
レベル10

ベストアンサー率 21% (28/132)

下のアドバイスに追加です。 「文字」となっている所は「文字列」と解釈されてかまいません。 それでも動作します。 又、使い方ですが、 s = replace ("置き換え!","き","きかえられたら置き"); System.out.println (s); これを実行すれば「置き換えられたら置き換え!」が出力されるハズ ...続きを読む
下のアドバイスに追加です。

「文字」となっている所は「文字列」と解釈されてかまいません。
それでも動作します。

又、使い方ですが、

s = replace ("置き換え!","き","きかえられたら置き");
System.out.println (s);

これを実行すれば「置き換えられたら置き換え!」が出力されるハズです。
  • 回答No.4
レベル10

ベストアンサー率 21% (28/132)

すみません、下の、クソプログラムです。 無限ループになっちゃいます (^_^;) 。 改良しないとダメですね・・・・。
すみません、下の、クソプログラムです。
無限ループになっちゃいます (^_^;) 。

改良しないとダメですね・・・・。
  • 回答No.6
レベル10

ベストアンサー率 21% (28/132)

ほんっとうに申し訳ないです m(v_v)m 今度こそ・・・・ public String replace (String s,String s2,String s3) //I don't know that this works with Japanese... { int start_number = 0; while (s.indexOf (s2,start_number) ...続きを読む
ほんっとうに申し訳ないです m(v_v)m
今度こそ・・・・

public String replace (String s,String s2,String s3) //I don't know that this works with Japanese...
{
int start_number = 0;
while (s.indexOf (s2,start_number) >= 0)
{
s = (s.substring (0,s.indexOf (s2,start_number)) + s3 + s.substring (s.indexOf (s2,start_number) + s2.length (),s.length ()));
start_number = s.indexOf (s2,start_number) + s3.length () - 1;
}
return s;
}
  • 回答No.7
レベル10

ベストアンサー率 21% (28/132)

下の、間違いです! 下の下の方が正しいです。 ...続きを読む
下の、間違いです!
下の下の方が正しいです。
お礼コメント
mune

お礼率 13% (21/151)

ありがとうございます。できました!ただ・・

static でない メソッド replace(java.lang.String,java.lang.String
,java.lang.String) を static コンテキストから参照することはできません。

コンパイル時に↑といったエラーがでたので

public static String replace(String s,String s2,String s3)
↑のようにstaticを適当に追加したら動いたのですが、これってどういう意味なのでしょうか?
元々の質問からそれてごめんなさい・・・
投稿日時 - 2001-04-04 18:02:52
  • 回答No.8
レベル10

ベストアンサー率 21% (28/132)

ええとですね、僕も実はよく分かってないのですが (^_^;)、 public class A { public static void main (String a) { replace ("ABC","A","-"); } //--省略 } この様にするとダメなんですよ、理由は分から ...続きを読む
ええとですね、僕も実はよく分かってないのですが (^_^;)、

public class A
{
public static void main (String a)
{
replace ("ABC","A","-");
}
//--省略
}

この様にするとダメなんですよ、理由は分からないのですが(笑)。
もう、おまじないと思った方がいいんじゃないですかね。
メインエントリーポイントがどうのとかいうので、

public class A
{
public static void main (String a)
{
new A (); //これが重要らしい
}
public A ()
{
//処理
replace ("ABC","A","-");
}
//省略
}

こうしないといけないみたいです。ちゃんと説明できなくって申し訳ないのですが、static を付けると、オブジェクトを作らなくてもそのメソッドを使える、という意味に解釈しています。僕は(笑)。

例えば、
public class A
{
public String abc ()
{
return "abc";
}
}
をいきなり A.abc (); と呼び出しても動いてくれませんが、
public class A
{
public static String abc ()
{
return "abc";
}
}
は、A.abc (); で動いてくれます。

ん~、僕もよく分かってないので、おかしな返答になっています。すみません。この辺のコアな所は本などでお調べになった方が無難かと思います。
  • 回答No.9

以下のページに文字列置換そのものがあります。 http://park.ruru.ne.jp/ando/work/who/doc/jp_ne_ruru_park_ando_util_ANString.html#change 誰にもわからないJava講座http://park.ruru.ne.jp/ando/work/who/html/index.html の 文字列操作 のとこですね。 (楽 ...続きを読む
以下のページに文字列置換そのものがあります。
http://park.ruru.ne.jp/ando/work/who/doc/jp_ne_ruru_park_ando_util_ANString.html#change

誰にもわからないJava講座http://park.ruru.ne.jp/ando/work/who/html/index.html

文字列操作
のとこですね。
(楽しく笑えて高度なことも書いててわかりやすくてお勧めです)

で、staticのことですが、
「static を付けると、オブジェクトを作らなくてもそのメソッドを使える」
というのは実際そうです。

オブジェクトはnewなりなんなりで作ってあげないと、
操作できないんです。
ないものを使おうとしても無理ですよね。

でもstatic付けてると静的に配置されるので
つかえる、と。
お礼コメント
mune

お礼率 13% (21/151)

ありがとうございます。
上のサイト非常にためになりそうな予感・・・
これからじっくり見てみます。
投稿日時 - 2001-04-05 09:53:26
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ