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
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (9件)

以下のページに文字列置換そのものがあります。


http://park.ruru.ne.jp/ando/work/who/doc/jp_ne_r …

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

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

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

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

でもstatic付けてると静的に配置されるので
つかえる、と。

参考URL:http://park.ruru.ne.jp/ando/work/who/html/index. …
    • good
    • 0
この回答へのお礼

ありがとうございます。
上のサイト非常にためになりそうな予感・・・
これからじっくり見てみます。

お礼日時:2001/04/05 09:53

ええとですね、僕も実はよく分かってないのですが (^_^;)、



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 (); で動いてくれます。

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

下の、間違いです!


下の下の方が正しいです。
    • good
    • 0
この回答へのお礼

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

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

ほんっとうに申し訳ないです 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;
}
    • good
    • 0

何度もすみません。


改良しました。

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;
}
    • good
    • 0

すみません、下の、クソプログラムです。


無限ループになっちゃいます (^_^;) 。

改良しないとダメですね・・・・。
    • good
    • 0

下のアドバイスに追加です。



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

又、使い方ですが、

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

これを実行すれば「置き換えられたら置き換え!」が出力されるハズです。
    • good
    • 0

今、即席で作ってみました。

日本語に対応しているかは分からないのですが、一応。

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=置き換える文字
    • good
    • 0

Java は良く知らないのですが、正規表現って無いみたいですね。



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

javascript にはあるのにね。

参考URL:http://www.cacas.org/~wes/java/
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報