【问题标题】:How to make a string shift backward each letter如何使字符串每个字母向后移动
【发布时间】:2020-08-11 08:39:28
【问题描述】:

我正在完成一个颤振项目中的一些功能。

void code_shift_backward() {
  var input_string = controller.text;
  List<String> output_list = [];

  var input_runes = input_string.runes.toList();
  for (var rune in input_runes) {
    var mutatedRune = rune--;
    output_list.add(String.fromCharCode(mutatedRune));
  }

  var output_string = output_list.join("");
  setState(() {
    text_in_tree = output_string;
  });
}

我给它wiggle这个词,我期待vhffkd,但它一直给它wiggle

【问题讨论】:

    标签: string dart unicode


    【解决方案1】:

    你必须改变:

    var mutatedRune = rune--;
    

    到:

    var mutatedRune = --rune;
    

    说明:

    rune-- 先将 rune 的值赋给 mutatedRune,然后将值减一。这意味着 mutatedRune 和 rune 具有相同的值。

    --rune 先减值,再赋值。

    阅读 Dart arithmetic operators 了解更多详情。

    【讨论】:

    • 感谢您的帮助和信息!
    • 我什至会说var mutatedRune = rune - 1;。
    【解决方案2】:

    您可以通过将 -- 移动到 rune 的前面来解决此问题。发生这种情况是因为将 -- 放在变量之后只会更新该行之后的变量。

    void code_shift_backward() {
      var input_string = controller.text;
      List<String> output_list = [];
    
      var input_runes = input_string.runes.toList();
      for (var rune in input_runes) {
        var mutatedRune = --rune;
        output_list.add(String.fromCharCode(mutatedRune));
      }
    
      var output_string = output_list.join("");
      setState(() {
        text_in_tree = output_string;
      });
    }
    

    【讨论】:

      【解决方案3】:

      对于尺寸,也许:

      String shiftBack(String input) =>
          String.fromCharCodes([for (var c in input.runes) c - 1]);
      

      【讨论】:

        猜你喜欢
        • 2011-09-20
        • 2019-07-01
        • 2016-01-10
        • 1970-01-01
        • 2019-09-29
        • 2021-04-14
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        相关资源
        最近更新 更多