[Dart]查找和替换字符串

时间:2018-10-02 19:58:15

标签: replace dart find

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);
  }
} 

如果这看起来很简单,很抱歉,仍在学习。

谢谢

2 个答案:

答案 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。