noob here:D我正在为该应用程序使用Flutter,但我在使用该应用程序的逻辑时遇到了麻烦。非常感谢您的帮助。
应用目标:通过以下方式解码(替换)所有输入的单词缩写: -用户通过文本框输入文本 -App查找任何缩写(几个缩写),并且仅用文本替换缩写。
我能够做到这一点,但在我的情况下,所有缩写都应在输入文本中,否则将不起作用,或者第二个索引将不起作用。 我尝试了几种行不通的方法,我使用了2个List作为Abv和相应的文本。
这是代码。
List<String> coded = ["GM", "HOT", "YAH"]; //ABV list
List<String> decoded = ["Gmail", "Hotmail", "Yahoo"]; //corresponding list
Map<String, String> map = new Map.fromIterables(coded, decoded);
String txt = "HOT was the best until GM took over"; //input text
void main() {
if ((txt.contains(coded[0]))) { //GM
String result = txt.replaceAll(coded[0], decoded[0]); //Replace with Gmail
print(result);
}
else if ((txt.contains(coded[0])) && (txt.contains(coded[1]))) {
String result = (txt.replaceAll(coded[0], decoded[0]));
(txt.replaceAll(coded[1], decoded[1]));
print(result);
}
else if ((txt.contains(coded[0])) && (txt.contains(coded[1])) && (txt.contains(coded[2]))) {
String result = txt.replaceAll(coded[0], decoded[0]);
txt.replaceAll(coded[1], decoded[1]);
txt.replaceAll(coded[2], decoded[2]);
print(result);
}
else {
print(txt);
}
}
如果这看起来很简单,很抱歉,仍在学习。
谢谢
答案 0 :(得分:7)
对于其他根据问题标题来到这里的人,请使用replaceAll
:
final original = 'Hello World';
final find = 'World';
final replaceWith = 'Home';
final newString = original.replaceAll(find, replaceWith);
// Hello Home
答案 1 :(得分:2)
Create user group using RBAC API?可以很轻松地完成您想要的操作:
List<String> coded = ["GM", "HOT", "YAH"]; //ABV list
List<String> decoded = ["Gmail", "Hotmail", "Yahoo"]; //corresponding list
Map<String, String> map = new Map.fromIterables(coded, decoded);
String txt = "HOT was the best until GM took over"; //input text
void main() {
final result = map.entries
.fold(txt, (prev, e) => prev.replaceAll(e.key, e.value));
print(result);
}
基本上,您将迭代地图条目(键/值对)。 fold
取一个初始值(在您的情况下为txt
),并使用一个函数来用迭代的当前元素更新以前的值。每次迭代后,结果将替换所有ABV。