String toSpaceSeparatedString(String s) {
var start = 0;
final strings = <String>[];
while (start < s.length) {
final end = start + 4;
strings.add(s.substring(start, end));
start = end;
}
return s.join(' ');
}
方法#2(效率较低)
String toSpaceSeparatedString(String s) {
const n = 4;
assert(s.length % n == 0);
var i = s.length - n;
while (i > 0) {
s = s.replaceRange(i, i, ' ');
i -= n;
}
return s;
}
7条答案
按热度按时间gzjq41n41#
你可以使用
String
的replaceAllMapped方法,你必须添加正则表达式,像这样:lrl1mhuk2#
fnx2tebb3#
有一个dart包提供了一些String操作的helper类。
Github:https://github.com/Ephenodrom/Dart-Basic-Utils使用以下命令安装:
用途
其他信息:
这些都是StringUtils类中的方法。
n6lpvg4x4#
你的问题太具体了:你只是想插入字符(或字符串)到另一个 dart 字符串。空白并不特别。
方法一
方法#2(效率较低)
方法#2效率较低(它需要重复插入到
String
中,因此涉及重复复制String
的相同部分),并且更笨拙(它从String
的末尾迭代到开头,以便索引稳定),并且有更多的角落情况(为了简单起见,我假设输入字符串可以被子串长度整除)。但是,我在这里包含它是因为它演示了如何使用String.replaceRange
,这对于将一个String
插入到另一个String
中通常是有用的,而且对于一次性的情况可能更简单。qf9go6mv5#
我有一个更简单的版本@diegoveloper的答案,使用allMatches。通过使用
join
,它不会成为额外的分隔符。mbzjlibv6#
用于在 dart 中显示卡号,如15XX XXXX XXXX 9876
lfapxunr7#
在特定索引/位置插入字符串的最简单方法是使用范围长度为零的String.replaceRange()方法。
为方便起见,可以使用以下扩展名: