在一般情况下,此方法有效。它围绕任何给定字符串中任何关键字的最早子字符串:
public String bracketize() {
String chars = ...; // you can put whatever input (such as 'these are some chars *£&$')
String keyword = ...; // you can put whatever keyword (such as *£&$^%)
String longest = "";
for(int i=0;i<keyword.length()-1;i++) {
for(int j=keyword.length(); j>i; j--) {
String tempString = keyword.substring(i,j);
if(chars.indexOf(tempString) != -1 && tempString.length()>longest.length()) {
longest = tempString;
}
}
}
if(longest.length() == 0)
return chars; // no possible substring of keyword exists in chars, so just return chars
String bracketized = chars.substring(0,chars.indexOf(longest))+"("+longest+")"+chars.substring(chars.indexOf(longest)+longest.length());
return bracketized;
}
嵌套for
循环检查每个可能的子字符串,并选择较大的,keyword
中包含的最长的子字符串。例如,如果关键字是 Dog,它将检查子字符串“Dog”、“Do”、“D”、“og”、“o”和“g”。它将这个可能最长的子字符串存储在(初始化为空字符串)中。如果检查完每个子串的长度仍然为0,则在 中找不到这样的子串,所以返回原来的字符串chars。否则,返回一个新字符串,其子字符串用方括号(圆括号)括起来。String
chars
longest
longest
keyword
chars
chars
longest
希望这会有所帮助,让我知道它是否有效。