我的代码出现问题。 它适用于大多数情况下,例如拍摄' cool'出于以下情况:Nagash很酷很酷,变成Nagash真的很酷。 但是像是在采取什么样的行为呢?出于以下情况:Nagash很酷,变成Nagash很酷。
我是java的新手,我的代码必须用循环编写,没有快捷方法。如果您的回复可以请你回答如何用java编写的代码。
String deleteFromString(String word, String remove) {
String updated = "";
int count = 0;
int start = 0;
int end = 0;
if (stringEquals(remove, "")) {
updated = word;
return updated;
}
while (count < length(word)) {
if (getChar(word, count) == getChar(remove, start)) {
if (getChar(word, count + length(remove) - 1) == getChar(remove, length(remove) - 1)) {
start = count;
end = count + length(remove) - 1;
println(count);
println(count + length(remove) - 1);
count = length(word);
}
}
count++;
}
count = 0;
while (count < start - 1) {
updated += getChar(word, count);
count++;
}
while (end < length(word)) {
updated += getChar(word, end);
end++;
}
println(updated);
return updated;
}
答案 0 :(得分:0)
您可以参考StringUtils替换方法的源代码。
public static String replace(final String text, final String searchString, final String replacement, int max) {
if (isEmpty(text) || isEmpty(searchString) || replacement == null || max == 0) {
return text;
}
int start = 0;
int end = text.indexOf(searchString, start);
if (end == INDEX_NOT_FOUND) {
return text;
}
final int replLength = searchString.length();
int increase = replacement.length() - replLength;
increase = increase < 0 ? 0 : increase;
increase *= max < 0 ? 16 : max > 64 ? 64 : max;
final StringBuilder buf = new StringBuilder(text.length() + increase);
while (end != INDEX_NOT_FOUND) {
buf.append(text.substring(start, end)).append(replacement);
start = end + replLength;
if (--max == 0) {
break;
}
end = text.indexOf(searchString, start);
}
buf.append(text.substring(start));
return buf.toString();
}
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
答案 1 :(得分:0)
你的问题在于最后两个循环。在这两个中的第一个中,循环将在您删除&#39;之前终止两个字符。 substring而不是之前的字符。在第二个循环中,循环开始于&#39; end&#39;角色,因此包括它。在您的示例中,包含最后一个字符,因为最终字符的索引总是比字符串的长度小一个。这样可以将删除的子字符串中的一个字符移动到父字符串中的左侧。请尝试改为:
while (count < start) {
updated += getChar(word, count);
count++;
}
while (end + 1 < length(word)) {
updated += getChar(word, end + 1);
end++;
}
答案 2 :(得分:-1)
为了简单起见,请这样做:
String test="Nagash is coolish";
test=test.replaceFirst("ish", "");
System.out.println(test);
输出
Nagash is cool
编辑:
以下是处理strings
替换数量的完整代码。
public class Test {
public static void main(String args[]) throws Exception {
Test test=new Test();
String result=test.computeRemove("this is demo and demo", "demo", "one");
// you can pass different parameters for desired result.
System.out.println(result);
}
public String computeRemove(String main,String remove, String replace) {
main=main.replaceFirst(remove,replace);
return main;
}
}
有关此类String
操作的详情,请访问this链接。