我希望将全宽度ASCI转换为普通的ASCII字符。我们是否有任何内置的方法或包来转换它?
发布于 2022-02-23 10:38:34
我不确定是否有这样的方法。
如果没有,您可以编写自己的字符串扩展。
扩展
extension StringX on String {
static const fullWidthRegExp = r'([\uff01-\uff5e])';
static const halfWidthRegExp = r'([\u0021-\u007e])';
static const halfFullWidthDelta = 0xfee0;
String _convertWidth(String regExpPattern, int delta) {
return replaceAllMapped(RegExp(regExpPattern),
(m) => String.fromCharCode(m[1]!.codeUnits[0] + delta)
);
}
String toFullWidth() => _convertWidth(halfWidthRegExp, halfFullWidthDelta);
String toHalfWidth() => _convertWidth(fullWidthRegExp, -halfFullWidthDelta);
}用法
在字符串扩展名中考虑的字符范围的用法。
void main() {
final myStr = '!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
print(myStr);
print(myStr.toHalfWidth());
print(myStr.toHalfWidth().toFullWidth());
}!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~https://stackoverflow.com/questions/71233774
复制相似问题