// 将 输入的字符串 中第 count 次出现时的 子字符串 替换为 另一个字符串
public static String replaceByCount( String inputStr, int sequence,
String strToFind, String replaceWith ){
int indexOfTheStr = getFromIndex( inputStr, strToFind, sequence );
if( indexOfTheStr == -1 ){ // 没找到
return null;
}else{
return inputStr.substring( 0, indexOfTheStr )
+ replaceWith
+ inputStr.substring( indexOfTheStr + strToFind.length() );
}
}
// 获得子字符串 strToFind 在字符串 inputStr 中第 count 次出现时的下标索引
public static int getFromIndex( String inputStr, String strToFind, int count ){
//对子字符串进行匹配
java.util.regex.Matcher slashMatcher = java.util.regex.Pattern.compile( strToFind ).matcher( inputStr );
int index = 0;
//matcher.find(); //尝试查找与该模式匹配的输入序列的下一个子序列
while( slashMatcher.find() ){
index++;
//当 strToFind 字符第 count 次出现的位置
if ( index == count ){
break;
}
}
try{
// matcher.start(); 返回以前匹配的初始索引
return slashMatcher.start();
}catch ( Exception e ){
//e.printStackTrace();
return -1; // 没找到
}
}
public static void main(String[] args){
// 输入的字符串
String inputStr = "CS1 CS2 CS3 CS4";
int count = 3;
String toFind = "CS";
String replaceWith = "AC";
// 将 输入的字符串 中第 count 次出现时的 子字符串 替换为 另一个字符串
String reStr = replaceByCount( inputStr, count, toFind, replaceWith );
System.out.println( reStr ); // 打印结果 CS1 CS2 AC3 CS4
}