在Java中用替换词替换出现的第n个词

在Java中用替换词替换出现的第n个词,java,match,Java,Match,我正在做与Java语言有关的家庭作业。我正在通过socket从网站读取文本文件,其中包含: BufferedReader br=新的BufferedReader(inr) 仅当n为奇数时,我需要用替换词替换目标词的第n次出现。 例如: 第2行的读数为“CES111111”。目标词为11;替换词是CS219。 因此,结果行是CESC21911CS21911 我怎样才能做到这一点?请帮我完成作业。String in=“ces11ccc11ceb11”; String in = "ces11c

我正在做与Java语言有关的家庭作业。我正在通过socket从网站读取文本文件,其中包含:

BufferedReader br=新的BufferedReader(inr)

仅当n为奇数时,我需要用替换词替换目标词的第n次出现。 例如:

第2行的读数为“CES111111”。目标词为11;替换词是CS219。 因此,结果行是CESC21911CS21911

我怎样才能做到这一点?请帮我完成作业。

String in=“ces11ccc11ceb11”;
    String in = "ces11ccc11ceb11";
    in = "ces11111111";
    String target = "11";
    String replacement = "CS219";
    int j=0;
    boolean flag=true;
    String result = "";

    for(int i=0;i<in.length();i++)
    {

        if(in.length()-i<target.length()) break;
        if(in.charAt(i)==target.charAt(0))
        {
            if(in.substring(i, i+target.length()).equals(target))
            {
                if(flag)
                {   
                    result += replacement;
                }
                else result += target;
                flag=!flag; 
                i = i+target.length()-1;
            }
            else result += in.charAt(i);

        }
        else
        {
            result += in.charAt(i);
        }

    }

    System.out.println(result);
in=“CES111111”; 字符串target=“11”; 字符串替换=“CS219”; int j=0; 布尔标志=真; 字符串结果=”; 对于(int i=0;i,以下是我的代码:

public static String replaceIfOdd(String stringToChange,
        String searchingWord, String replacingWord) {
    final String separator = "#######";
    String splittingString = stringToChange.replaceAll(searchingWord,
            separator + searchingWord);
    String[] splitArray = splittingString.split(separator);
    String result = "";
    for (int i = 0; i < splitArray.length; i++) {
        if (i % 2 == 1)
            splitArray[i] = splitArray[i].replace(searchingWord,
                    replacingWord);
        result += splitArray[i];
    }
    System.out.println(result);
    return result;
}
这背后的逻辑如下:

我将所有出现的
searchingWord
替换为
分隔符+searchingWord
。 之后,我使用
split
函数拆分结果字符串。 然后我循环遍历数组的所有元素,只有当
searchingWord
出现在数组中的奇数位置时,我才进行正确的替换,同时,我只是在正确的替换完成后重新创建字符串

希望这就是你一直在寻找的


注:我使用了一个字符串
分隔符
来分解
stringToChange
,显然,如果你的
stringToChange
中有这样一个字符串,该方法将不会给你正确的结果……如果你担心的话,我会尝试考虑一个不同的实现。再见!

“如果n为奇数,我需要将第n次出现的???替换为仅???。
-关于什么?仅替换为什么?这一行令人困惑。我正在更正我的问题:我需要将第n次出现的目标词替换为仅当n为奇数时出现的替换词。这些目标词和替换词不作为命令行参数,目标词=args[2] =11,替换字=args[3]=CS219,我不知道行内容,我给出的这一行只是一个示例。谢谢,但我再次说,可能行是CES11CC11CEB11,结果必须是CESS219CCC11CEBCS219。因此,我需要一个通用的解决方案,适用于每种情况是的,此代码适用于CES11CC11CEB11,但不适用于CES111111111对不起:)再次检查,这是一个小错误。错过了13秒!
public static String replaceIfOdd(String stringToChange,
        String searchingWord, String replacingWord) {
    final String separator = "#######";
    String splittingString = stringToChange.replaceAll(searchingWord,
            separator + searchingWord);
    String[] splitArray = splittingString.split(separator);
    String result = "";
    for (int i = 0; i < splitArray.length; i++) {
        if (i % 2 == 1)
            splitArray[i] = splitArray[i].replace(searchingWord,
                    replacingWord);
        result += splitArray[i];
    }
    System.out.println(result);
    return result;
}
replaceIfOdd("ces11111111", "11", "CS219");