替换字符串中第i次出现的最快方法

时间:2016-04-15 16:18:37

标签: java android arrays string replace

我有一个由n个相等的子串组成的字符串。例如,字符串"hellooo dddd"有3个"dd"子字符串(我说它已经发生了3次)。在一个更一般的情况下,我们在字符串中有n个相等的子字符串,如何替换字符串中的第i个出现。 A,类似replace()的方法,用于第i个子串。我想在我的android代码中实现它。 (英语不是我的第一语言,所以请原谅任何错误。)。

1 个答案:

答案 0 :(得分:1)

public static String replace(String input, String pattern, int occurence, String replacement){
    String result = input; 
    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(result); 
    if(occurence == 0){ 
        return result; 
    } else if(occurence == 1){
        m.find();
        result = result.substring(0,m.start()) + replacement + result.substring(m.end());
    } else { 
        m.find();
        int counter = 1; 
        try { 
            while((counter<occurence)&&m.find(m.start()+1)){
                counter++; 
            }
            result = result.substring(0,m.start()) + replacement + result.substring(m.end());
        } catch(IllegalStateException ise){
            throw new IllegalArgumentException("There are not this many occurences of the pattern in the String."); 
        }
    }
    return result; 
}

如果我理解正确的话,似乎会做你想要的事情。

使用匹配器/模式系统,可以使用更复杂的正则表达式。