在Java中用替换词替换出现的第n个词
我正在做与Java语言有关的家庭作业。我正在通过socket从网站读取文本文件,其中包含:在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
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");