Java 如何替换不在两个字符之间的所有字符串?
将“文本”替换为“…”的示例: 之前: 文本文本文本 之后:Java 如何替换不在两个字符之间的所有字符串?,java,string,replace,Java,String,Replace,将“文本”替换为“…”的示例: 之前: 文本文本文本 之后: …text…您需要对字符进行迭代,并仅附加在两个指定字符之间的字符。这可以通过以下方式完成: private String splitStr(String str, char first, char second) { StringBuilder sb = new StringBuilder(); if(str.isEmpty() || str.indexOf(first) < 0 || str.
…text…您需要对字符进行迭代,并仅附加在两个指定字符之间的字符。这可以通过以下方式完成:
private String splitStr(String str, char first, char second) {
StringBuilder sb = new StringBuilder();
if(str.isEmpty() || str.indexOf(first) < 0 || str.indexOf(second) < 0)
return sb.toString();
char[] chars = str.toCharArray();
boolean append = false;
for(char c : chars) {
if(c == first) {
sb.append(c);
append = true;
}else if(c == second) {
sb.append(c);
append = false;
}else if(append)
sb.append(c);
}
return sb.toString();
}
请注意,文本仍然包含文本,但其周围的大括号不会阻止其被替换
您需要将结果分配给一个新字符串才能使用它。弦是
在这种情况下,更容易找到您想要保留的内容,并替换其余内容 例如,像这样:
static String abbreviate(String input, String openTag, String closeTag) {
String regex = Pattern.quote(openTag) + ".*?" + Pattern.quote(closeTag);
StringBuilder buf = new StringBuilder();
int start = 0;
for (Matcher m = Pattern.compile(regex).matcher(input); m.find(); start = m.end()) {
if (start < m.start())
buf.append("...");
buf.append(m.group());
}
if (start < input.length())
buf.append("...");
return buf.toString();
}
输出
…文本…文本。。。
…$text$…$text$。。。
...
如果你表现出你试图自己解决问题,人们会感激你。可能会显示一些您尝试过但无法正常工作的代码,或者解释您对可以执行的操作的想法。如果你自己没有表现出任何尝试,听起来就像你在要求别人做你的家庭作业。答案是。。。。。。。。。当问题特别指出它应该返回…文本。。。这不是一个有用的答案。问题标题说替换所有字符串,这意味着可能有多对字符,例如文本,所以这不起作用。+1。像往常一样回答得很好!我在想,如果start
"text(text)text" => "(text)"
String s = "text(text)text";
String newString = s.replace("text", "...");
System.out.println(newString); //returns ...(...)...
static String abbreviate(String input, String openTag, String closeTag) {
String regex = Pattern.quote(openTag) + ".*?" + Pattern.quote(closeTag);
StringBuilder buf = new StringBuilder();
int start = 0;
for (Matcher m = Pattern.compile(regex).matcher(input); m.find(); start = m.end()) {
if (start < m.start())
buf.append("...");
buf.append(m.group());
}
if (start < input.length())
buf.append("...");
return buf.toString();
}
System.out.println(abbreviate("text(text)text(text)text", "(", ")"));
System.out.println(abbreviate("text$text$text$text$text$text", "$", "$"));
System.out.println(abbreviate("text(text)text", ")", "("));