javaのreplaceを使わない置換の方法

このQ&Aのポイント
  • 引数1の文字列から、引数2の文字列を含む場合、引数3の文字列に置き換える方法を解説します。
  • 1文字の場合は簡単な処理ですが、2文字や3文字の場合は難しくなります。
  • また、Javaのreplace系メソッドを使用せずに置換を実現する方法も紹介します。
回答を見る
  • ベストアンサー

javaの質問です。

JAVAの質問です。 (replaceを使わない置換) java あいういあ あ !! > !!いうい!! 上のように、引数1に引数2の文字が含まれていればその文字を引数3に置き換えるという問題を解いているのですが、思うようにいきません。引数2が1文字なら簡単なのですが、2文字・3文字の場合が全く分かりません。また、replace系も使うことはできません(replacefirstなど)。 コード例を挙げて頂けないでしょうか? 丸投げなのは重々承知しておりますが、どうかよろしくお願い致します。 class Replace{   public static void main(String args[]){     String str=args[0];     int num = str.indexOf(args[1]);     while(num != -1){       str=(str.substring(0,num)+args[2]+str.substring(num+1));       System.out.print(str);     }     System.out.println();    } } 一応こんな感じかな?と思ってコードを作ってはいるのですが、結果としては散々です。。。

  • Java
  • 回答数3
  • ありがとう数7

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

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.1

class Replace{   public static void main(String args[]){     String str=args[0];     int num = str.indexOf(args[1]);     while(num != -1){       str=(str.substring(0,num)+args[2]+str.substring(num+args[2].length()));       num = str.indexOf(args[1]);     }     System.out.println(str);    } } これが正解。 よく見比べてみてね。

その他の回答 (2)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.3

jjon-com様 その通りでした修正感謝! それと、テストしてて思ったけど、引数が3つあることをチェックしておいたほうがいいよ。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

回答No.1 を1文字修正。 × str=(str.substring(0,num)+args[2]+str.substring(num+args[2].length())); ○ str=(str.substring(0,num)+args[2]+str.substring(num+args[1].length()));

関連するQ&A

  • javaの問題です。

    現在以下のようにプログラムを書いてみました。 public class Replace { public static void main(String[] args) { String str = args[0]; int num = str.indexOf(args[1]); while (num != -1){ str = ( str.substring(0, num) + args[2] + str.substring(num + args[1].length()) ); num = str.indexOf(args[1]); } System.out.println(str); } } 第一引数に第二引数が含まれていれば、それを第三引数に置換する、というものです。 上記にて第二引数が単体ならば動作するのですが、たとえば 第一引数:ABCBA 第二引数:AB 第三引数:C という風に第二引数を複数にすると、 結果がCCBAと後半のBAが変換されなくなってしまいました。 後半部分もAとBが含まれる、ということで、同じように変換出来るようにしたいのですがどのようにすればよいのでしょうか?;; どうぞよろしくお願いいたします;;

    • ベストアンサー
    • Java
  • Scanner と BufferedReader

    javaでキーボードからの入力を格納するやつがあって、 Scanner と BufferedReaderのやり方がありますが、これはどう違うのでしょうか? それとも全く同じでしょうか? たとえば、 ■一つ目 import java.io.*; class Sample3{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列を入力してください"); String str1=br.readLine(); System.out.println("検索文字を入力してください"); String str2=br.readLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } ■二つ目 import java.util.Scanner; class Sample4{ public static void main(String[] args){ Scanner stdIn=new Scanner(System.in); System.out.println("文字列を入力してください"); String str1=stdIn.nextLine(); System.out.println("検索文字を入力してください"); String str2=stdIn.nextLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } これら2つは全く同じ実行結果が得られると思うのですが、 Scanner と BufferedReader の使い分けるべき場合などあるのでしょうか?

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • charAt(0)について

    import java.io.*; class Sample3 { public static void main(String[] args) throws IOException { System.out.println("文字列を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("検索文字を入力してください。"); String str2 = br.readLine(); char ch = str2.charAt(0); int num = str1.indexOf(ch); if(num != -1) System.out.println(str1 + "の" + (num+1) + "番目に「" + ch + "」が見つかりました。"); else System.out.println(str1 + "に「" + ch + "」はありません。"); } char ch = str2.charAt(0);の部分ですが、 charAt(0)というのは ( )に書かれている番号「のみ」を参照するんですよね? だからもし「こ」んちにはと入力しても0番目の「こ」しか出さないはずなのに、 「に」 を入れたらちゃんと「3番目に に が見つかりました」と出るのはなぜですか?

    • ベストアンサー
    • Java
  • Java for文

    for文について、キーボードで入力して、その数が素数(1またはその数以外で割り切れない数)であるかを判断するコードですが、for文とif文の関係が良くわかりません。ご教示ください。 <サンプル> public static void main(String[] args) throws IOException{ System.out.println("2以上の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); ※1 for(int i=2; i<=num; i++){ if(i == num){ System.out.println(num + "は素数です。"); ※2 }else if(num % i == 0){ System.out.println(num + "は素数ではありません。"); break; ※1と※2の処理について初心者でもわかるような解説をおねがいできますでしょうか? よろしくお願いいたします。

  • javaの質問です 合ってるかをお願いします

    間違ってる場合は何が正解かを教えてください。 よろしくお願いします 1 変数strには何が入っているか test 2 dataとstrの関係 わからないです。 public class Example5 { public static void main( String[] args ) { String data = "test."; hyouji( data ); } static void hyouji( String str ) { System.out.println( str ); } }

    • ベストアンサー
    • Java
  • 文字列について(続き)

    文字列について、あれから私がベストアンサーに選んだ回答を元に下記のプログラムを作成したのですが私が作成したプログラムで出た結果が下記のようになります。実行例のような結果を出すにはどのようにすればいいのですか?Java初心者なのでお願いします。 作成したプログラムで出た結果 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name is.iadnaS oraT 実行例 文字列を入力 My name is Taro Sandai. 整数を入力 10 My name isdnaS oraT ai. import java.io.*; class K2 { public static void main(String args[]) throws IOException { System.out.println("文字列を入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); String str3 = str1.substring(0,num); String str4 = str1.substring(num); StringBuffer str5 = new StringBuffer(str4); str5.reverse(); System.out.println(str3+str5); } }

    • ベストアンサー
    • Java
  • Androidプログラミング 文字列の切り取り

    こんにちは。 eclipseを使用してAndroidアプリを作成しているものです。 今回、文字列の切り取りに挑戦しようと思っているのですが、 調べても、 String str = "123456789"; System.out.println(String.format("取り出し前の文字列 : %s", str)); System.out.println("文字列の3文字目から7文字目を取り出す -> " + str.substring(2,7)); System.out.println("文字列の2文字目から2文字目を取り出す -> " + str.substring(1,2)); System.out.println("文字列の3文字目から3文字分を取り出す -> " + str.substring(2,2+3)); といったものしか出てきません。 eclipseではSystem.out.printは使えませんよね? 実行してももちろんなにも表示されません。 私の調べ方が悪いのかもしれませんが、、、 (「Android 文字列 切り取り」といったようにAndroidというワードは入れています。) 如何せん、プログラミング初心者なこともありまして、 これ以上手の施し方がわからない状態です。 Androidプログラミングに詳しい方、優しい方、 参考になるURLやサンプルコードを載せてくださると 助かります。 よろしくお願いいたします。

  • JAVAについて

    現在JAVAについて学んでいるのですが、下記のソースが実行出来ません。どなたかわかる方、回答宜しくお願いいたします。 public class Lound { void main(String[] args) { String rtn = methWithParamReturn(3); if(rtn.equals("0")) System.out.println("0あかんよ"); else System.out.println(rtn); } public String methWithParamReturn(int x) { System.out.println(x); x= x*x; String str = String.valueOf(x); return str; } }

  • 【Java】複数の引数の数値と文字列の判定

    Javaについてです。 コマンドライン引数を複数渡し、渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し 数字のみでない場合は文字列を逆から1文字ずつ出力する。 数値の判定はtry/catchで行い、catchメソッドには「stringFlg = true;」のみにする。 というプログラムを作りたいのですが、 引数が1つの時は上手くいくのですが、11 2あ あ3 44を渡した場合、 22 あ 2 3 あ 88 と出るはずが、 22 1 1 あ 2 3 あ 4 4 と出てしまいます…。 どうしたら全ての引数を正しく表示出来るのでしょうか?教えて下さい。 現時点のソースコードです。 public class Test { public static void main(String[] args) { boolean stringFlg = false; try { if(StringUtils.isNumeric(args[0])){ for(String arg : args) { int num = Integer.parseInt(arg); System.out.println(num * arg.length()); } } else{ stringFlg = true; } } catch (NumberFormatException e) { stringFlg = true; } if(stringFlg){ for(String val : args) { String[] str = val.split(""); for(int i = str.length-1; i >= 0; i--){ System.out.println(str[i]); } } } } }

    • ベストアンサー
    • Java

専門家に質問してみよう