1

おそらくばかげた質問ですが、私は検索して検索しましたが、replace、replaceAllなどの組み込みのJava関数ではなく、forループを使用して文字列内の部分文字列を置き換える方法を見つけることができないようです.自分で作成しましたが、約4つのforループになり、最終的には機能しませんでした。組み込みの置換関数ではなく、ループを使用して置換関数を作成する方法について何か考えはありますか??

使用している変数のアイデアを提供しようとしたコードを追加しました。

public boolean replaceString(String oldString, String newString){
        String D = "xx";
    char[] find = "BC".toCharArray();
    char[] replace ="ABCDE".toCharArray();
    String rep = new String(replace);
    String fin = new String(find);
    String E ="";
    String F = "";
    for(int counter = 0; counter<replace.length; counter++){
        if(find[counter] == replace[counter]){
            for(int j=counter+1; j<counter; counter++){
                E += rep.charAt(j);
                for(int h=j+1; h<j; h++){
                    if(find[h] == replace[h]){
                        for(int k=h+1; k<h; k++){
                            F += rep.charAt(k);
                        }
                    }
                }
            }
        }
    }
    String finReplace = new String(E + D + F);
    System.out.println("REPLACE");
    System.out.println(finReplace);

前もって感謝します!!

4

3 に答える 3

0

これが役立つと思います:

StringBuilder replacedString = new StringBuilder();

for(int counter = 0; counter<replace.length; counter++){
    boolean charFound = false;
            for(int j=0; j<find.length; j++){
                if(find[j]==replace[counter])
                   charFound = true;
            }
    if(!charFound)
       replacedString.append(replace[counter]);
}

System.out.println("Replaced string" + replacedString.toString());
于 2013-09-22T09:34:50.863 に答える
0

これが課題であることを願っています。したがって、疑似コードを提供します。`

public static String replaceString(
final String inputString,
final String searchString,
final String newString)
{
 if ( searchString==null || searchString.equals("") ) {
    throw new IllegalArgumentException("Search string must have some content");
 }

 final StringBuilder result = new StringBuilder ();

 int startIdx = 0;
 int idxOld = 0;
 while ((idxOld = inputString.indexOf(searchString, newString)) >= 0) {
   result.append( inputString.substring(startIdx, idxOld) );

   result.append( newString);
   startIdx = idxOld + searchString.length();
 }
 //the final chunk will go to the end of aInput
 result.append( inputString.substring(startIdx) );
 return result.toString();

}

于 2013-09-22T08:39:33.350 に答える
0

コードをもう一度見てください。以下は、カウンターが 2 の場合に ArrayIndexOutOfBoundException をスローします。

if(find[counter] == replace[counter])

次のループは決して実行されず、j は counter+1 に初期化されますが、ループを実行する条件は、j が counter 未満であることです。

for(int j=counter+1; j<counter; counter++)

同じことが内側のループにも当てはまります

for(int h=j+1; h<j; h++)
于 2013-09-22T09:11:06.550 に答える