首页 > 解决方案 > Dart 将简单类转换为扩展

问题描述

在这里我粘贴了我的简单类,我可以将英文数字转换为阿拉伯数字,我想将其转换为扩展名

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

标签: flutterdartextension-methods

解决方案


你几乎拥有它。基本上,内部和扩展,用于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;
  }
}

推荐阅读