dart 如何将数字从一种语言转换为英语或强制用户只能用英语书写?

eanckbw9  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(83)

我想把阿拉伯数字转换成英文或强制用户只输入英文数字,那么如何做到这一点?即123 =等。

7cjasjjr

7cjasjjr1#

对于转换数字,你可以简单地写一个这样的函数:

Map persianNumberMap = {
  '۰': '0',
  '۱': '1',
  '۲': '2',
  '۳': '3',
  '۴': '4',
  '۵': '5',
  '۶': '6',
  '۷': '7',
  '۸': '8',
  '۹': '9'
};
    
String convertPersianNumberToEnglish(String number) {
   String converted = number;
   persianNumberMap.forEach((key, value) => converted.replaceAll(key, value));
   return converted;
}

但是你也可以使用FilteringTextInputFormatter来限制TextField的输入:

TextField(inputFormatters: [
     FilteringTextInputFormatter.allow(RegExp("[0-9]")),
])

TextField仅接受英文数字字符。

x8diyxa7

x8diyxa72#

我已经在hrk_batteries包中发布了String的localizeDigits()扩展方法。
添加包:

$ dart pub add hrk_batteries

如下所示:
localized_digits_example.dart

import 'package:hrk_batteries/hrk_batteries.dart';

void main() {
  final String arToEnLocalizedString = 'A٠١٢٣٤٥٦٧٨٩Z'.localizeDigits(
    fromZeroDigit: '\u0660', // fromZeroDigit: '٠',
    toZeroDigit: '0',
  );
  print(arToEnLocalizedString); // A0123456789Z
}

相关问题