我正在做与Java语言相关的功课。我正在通过套接字从网站上读取文本文件:
BufferedReader br = new BufferedReader(inr);
while((line2 = br.readLine()) != null)
{...}
只有当n为奇数时,我才需要用替换字替换目标字的第n次出现。 例如:
line2被称为“ces11111111”。目标词是11;替换词是CS219。 因此,结果行是cesCS21911CS21911。
我怎样才能做到这一点?请帮我完成我的作业。
答案 0 :(得分:0)
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);
答案 1 :(得分:0)
这是我的代码:
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");
这背后的逻辑如下:
我将searchingWord
的所有匹配项替换为separator + searchingWord
。
之后我只使用split
函数拆分结果字符串。
然后我循环遍历数组的所有元素,只有当searchingWord
出现在数组的奇数位置时才进行正确的替换,同时,我只需重新创建正确替换完成的字符串。
希望这就是你要找的东西!
PS:我使用了一个字符串separator
来分解stringToChange
,显然如果你的stringToChange
中有这样一个字符串,该方法就不会给你正确的权利结果......如果你担心它,我会尝试考虑不同的实现。侨!