我想替换与我的String数组中的任何单词匹配的单词,我尝试了下面的代码,但它仅替换了第一个条件,我相信它是因为return语句,但是我想不出另一种方法来做到这一点。
public String wordsToCorrect (String word)
{
word = word.toLowerCase();
StringBuilder sb;
String[] bro =new String[5];
bro [0] = "bros";
bro [1] = "bro";
bro [2] = "bros";
bro [3] = "broda";
bro [4] = "brother";
String[] brother = bro;
String[] si = new String[6];
si [0] = "sis";
si [1] = "sister";
si [2] = "sista";
si [3] = "6sta";
si [4] = "sisy";
si [5] = "sissy";
String[] sister = si;
for ( int i=0;i < brother.length;i ++ )
{
if ( StringUtils.containsIgnoreCase(word, brother [i]) )
{
StrBuilder replace = new StrBuilder();
replace.append(word);
replace.append(" ");
replace.replaceAll(brother [i], "brother");
return replace.toString();
}
}
for ( int i= 0;i < sister.length;i++ )
{
if ( StringUtils.containsIgnoreCase(word, sister [i]) )
{
StrBuilder replace = new StrBuilder();
replace.append(word);
replace.append(" ");
replace.replaceAll(sister [i], "sister");
return replace.toString();
}
}
public String wordsToCorrect (String word)
{
StringBuilder sb;
String[] bro =new String[5];
bro [0] = "bros";
bro [1] = "bro";
bro [2] = "bros";
bro [3] = "broda";
bro [4] = "brother";
String[] brother = bro;
String[] si = new String[6];
si [0] = "sis";
si [1] = "sister";
si [2] = "sista";
si [3] = "6sta";
si [4] = "sisy";
si [5] = "sissy";
List<String> broList = Arrays.asList(bro);
List<String> sisList = Arrays.asList(si);
String[] words = word.split("\\s");
for(int i=0; i<words.length; i++){
String singleWord = words[i];
if(broList.contains(singleWord.toLowerCase())){
words[i] = "brother";
}else if(sisList.contains(singleWord.toLowerCase())){
words[i] = "sister";
}
}
return String.join(" ", words);
}
编辑:添加了说明
您的问题不只是循环结束。如果您设法继续循环,则可以在“兄弟”一词中添加兄弟,这样您就可以得到“兄弟”。使用我的代码,您首先要按空格分开,这样您就可以隔离每个单词,然后将其与所需的单词匹配。我使用列表,因为它更容易使用包含。另外,在执行.toLower()时,您也不需要ignoreCase(我更喜欢在contains参数中使用它,因为这不会更改原始String的upperCases)。
对于任何使用空格作为分隔符的String,此代码均适用。如果您还需要使用换行符,则可能需要修改分割部分并设法维护分隔符,也许使用与初始方法类似的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句