为什么从单词列表中随机选择元素时,元素末尾会出现空白字符 [已关闭]

Why am I getting an blank character at the end of an element when randomly selecting an element from a word list [closed]

提问人:Golden Lion 提问时间:4/1/2022 最后编辑:M. JustinGolden Lion 更新时间:11/18/2023 访问量:50

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

去年关闭。

我必须对我选择的单词进行硬编码以避免空白字符

Future<String> getData() async {
    try {
      return await rootBundle.loadString('text_file/four_words.txt');
    } catch (e) {
      throw (e.toString());
    }
  }
Future<String> val = getData();
val.then((value) {
  setState(() {
    dataString = value;
    var elements = dataString.split("\n");
    elements.forEach((element) {
      wordList.add(element);
      //debugPrint(element);
    });


_selectNewWord() {
    setState(() {
      selectedWord = wordList[_random.nextInt(wordList.length)];
      selectedWord=selectedWord[0]+selectedWord[1]+selectedWord[2]+selectedWord[3];
      var elements2 = selectedWord.split("");
      myList.clear();
      for (var element in elements2) {
        if (element.isNotEmpty) {
          myList.add(element);
        }
      }
    });
  }
字符串 振相等性 比较

评论

0赞 jamesdlin 4/1/2022
你能详细说明你观察到的问题吗,也许举个例子?
1赞 super 4/1/2022
您可以尝试使其适用于这两种情况。dataString.replaceAll("\r\n", "\n").split("\n")
1赞 jamesdlin 4/2/2022
这个问题是否真的可以用你展示的代码重现,或者它是否依赖于你没有展示的从文本文件加载数据的代码?如果要从文本文件中读取单词,则需要确保已删除回车符和/或换行符。您的检查将仅测试空字符串 (),而不测试空格字符。element.isNotEmpty''

答:

0赞 Golden Lion 4/2/2022 #1

我实现了dataString.replaceAll(“\r\n”, “\n”).split(“\n”),它通过删除导致拆分列表中额外项目的\r解决了这个问题