Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串操作-从字符串中删除字符_Java_Regex_String - Fatal编程技术网

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 =

我目前在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 = 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, "~", ","));