代码之家  ›  专栏  ›  技术社区  ›  DolDurma

Dart将简单类转换为扩展

  •  -2
  • DolDurma  · 技术社区  · 5 年前

    这里我粘贴了我的简单类,我可以把英语数字转换成阿拉伯语数字,我想把它转换成扩展名

    class Strings{
      static String replaceFarsiNumber(String input, bool reverse) {
        const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
        const farsi = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
    
        /*en to fa*/
        if (reverse) {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(english[i], farsi[i]);
          }
        } else {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(farsi[i], english[i]);
          }
        }
        return input;
      }
    }
    

    我刚进来的时候 extensions 在dart中,我在 flutter 如何将其转换为扩展:

    extension ConvertNum on String {
      static const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
      static const farsi = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
    
      String changeNUm(String input, bool reverse) {
        /*en to fa*/
        if (reverse) {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(english[i], farsi[i]);
          }
        } else {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(farsi[i], english[i]);
          }
        }
        return input;
      }
    }
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Didier Prophete    5 年前

    你差点就拿到了。基本上,内部和扩展,使用 this 要引用当前字符串:

    extension ConvertNum on String {
      static const english = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
      static const farsi = ['Û°', 'Û±', 'Û²', 'Û³', 'Û´', 'Ûµ', 'Û¶', 'Û·', 'Û¸', 'Û¹'];
    
      String changeNUm(bool reverse) {
        /*en to fa*/
        String input = this;
        if (reverse) {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(english[i], farsi[i]);
          }
        } else {
          for (int i = 0; i < english.length; i++) {
            input = input.replaceAll(farsi[i], english[i]);
          }
        }
        return input;
      }
    }