快速提问。我有以下代码:
//Cookie
if (mType.getText().toString().toLowerCase().contains("Cookie")) {
mResults.setText(mType.getText().toString().replaceAll("(?i)\\bCookie\\b", "Dough"));
}
//Cola
if (mType.getText().toString().toLowerCase().contains("Cola")) {
mResults.setText(mType.getText().toString().replaceAll("(?i)\\bCola\\b", "Sprite"));
}
我有一个脚本,允许我从用户输入中替换某些单词。当用户输入单词“Cookie”时,脚本将该单词替换为“Dough”。但是,如果用户键入“Cookie Cola”,则脚本只会将“Cola”替换为“Sprite”,并丢弃之前替换单词“Cookie”的if语句。
那么,我如何创建一个脚本,允许我从输入中替换多个单词而不丢弃之前的if语句?
答案 0 :(得分:1)
您只需将其存储到变量中即可。
喜欢:
String value = (mType.getText().toString().toLowerCase();
if(value.contains("soda")) { value = value.replaceAll("soda","cola"); }
if(...) {...}
但是。从技术上讲,你做的工作超出了必要的范围。你可以链接你的替代品。
String value = (mType.getText().toString().toLowerCase();
value = value.replaceAll("soda","cola").replaceAll("...","...")... //Etc.
答案 1 :(得分:0)
要在两个ifs中回答您的问题,您需要在mType.getText()上调用replace。但是你并没有改变这个价值。所以你要对原始字符串进行第二次替换。以下是代码的外观:
String text = mType.getText().toString();
text = text.replaceAll("(?i)\\bCookie\\b", "Dough");
text = text.replaceAll("(?i)\\bCola\\b", "Sprite"));
mResults.setText(text);
答案 2 :(得分:0)
将多个String.replaceAll()
语句链接在一起可以获得相同的结果,而无需if
语句。例如
String result = mType.getText.toString().toLowerCase();
result = result.replaceAll("cola", "sprite")
.replaceAll("cookie", "dough"); // And so on...
mResults.setText(result);