Java 字符串操作-从字符串中删除字符
我目前在java中有以下字符串:Java 字符串操作-从字符串中删除字符,java,regex,string,Java,Regex,String,我目前在java中有以下字符串: "Blah, blah, blah,~Part One, Part Two~,blah blah" 我需要删除~字符之间的逗号,使其显示为 "Blah, blah, blah,~Part One Part Two~,blah blah" 有人能帮我吗 非常感谢,我还没有测试过这个,但我会做一些类似的事情: string sample = "Blah, blah, blah,~Part One, Part Two~,blah blah"; Regex r =
"Blah, blah, blah,~Part One, Part Two~,blah blah"
我需要删除~字符之间的逗号,使其显示为
"Blah, blah, blah,~Part One Part Two~,blah blah"
有人能帮我吗
非常感谢,我还没有测试过这个,但我会做一些类似的事情:
string sample = "Blah, blah, blah,~Part One, Part Two~,blah blah";
Regex r = new Regex("(.+)\\~(.+),(.+)\\~(.+)","${1}~${2}${3}~${4}");
r.replaceAll(sample );
我引用了。在这里,+匹配一个或多个任意字符。可以找到更多这样的模式
上述印刷品:
a,b,c,d,e,f
a,b,~c~,d,e
~abcde~
a,b,c,~def~,g,h,i,~jkl~m,n,o~qr~s,t,u
工作原理
有4例:
我们在绳子的开头,外面
只要在找到第一个之前进行匹配,下次我们就可以进去了
所以,^[^~]*~
直到绳子的尽头,再也没有了~
如果有偶数的~,我们就在外面
比赛到最后
所以,[^~]*$
如果不是上面提到的,我们就在里面
继续在~之前找到下一个逗号,这样我们仍然在里面
所以,[^,~]*,不要捕捉逗号!
如果我们找到~而不是逗号,那么就出去,然后再回到下一个~
所以,[^,~]*[^~]*~
在所有情况下,我们都要确保捕获足够的数据来重建字符串
工具书类
,
相关问题
PHP版本
以下是一种可以完成这项工作的方法:
public String deleteCharacterBetween(String deleteFrom, String betweenChar, String charToRemove) {
int nextIndex = 0, index = 0;
while (true) {
index = deleteFrom.indexOf(betweenChar, nextIndex);
nextIndex= deleteFrom.indexOf(betweenChar, index + 1);
if (nextIndex < 0 || index < 0)
return deleteFrom;
String before = deleteFrom.substring(0, index);
String toEdit = deleteFrom.substring(index, nextIndex);
String after = deleteFrom.substring(nextIndex);
toEdit = toEdit.replace(charToRemove, "");
deleteFrom = before + toEdit + after;
}
}
~在字符串中出现的具体次数是多少?它总是两次还是任意偶数次?它们总是封装一个字符串,所以总是在成对的开头,在24分钟内。我让步了。
String text = "Blah, blah, blah,~Part One, Part Two~,blah blah,~Part One, Part Two~,blah blah";
Pattern pattern = Pattern.compile("~[^~]+~");
Matcher matcher =pattern.matcher(text);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
matcher.appendReplacement(sb, matcher.group(0).replaceAll(",", ""));
}
matcher.appendTail(sb);
text = sb.toString();
public String deleteCharacterBetween(String deleteFrom, String betweenChar, String charToRemove) {
int nextIndex = 0, index = 0;
while (true) {
index = deleteFrom.indexOf(betweenChar, nextIndex);
nextIndex= deleteFrom.indexOf(betweenChar, index + 1);
if (nextIndex < 0 || index < 0)
return deleteFrom;
String before = deleteFrom.substring(0, index);
String toEdit = deleteFrom.substring(index, nextIndex);
String after = deleteFrom.substring(nextIndex);
toEdit = toEdit.replace(charToRemove, "");
deleteFrom = before + toEdit + after;
}
}
String a = "Blah, blah, blah,~Part One, Part Two~,blah blahBlah, blah, blah,~Part One, Part Two~,blah blah";
System.out.println(deleteCharacterBetween(a, "~", ","));