How to insert characters into a Dart String?
我想在给定位置的Dart字符串中添加一些空格,就像这样(在Java中)。
所以...
1 | 'XPTOXXSFXBAC' become 'XPTO XXSF XBAC' |
有没有简单的方法?
您可以使用
1 2 | final value = "XPTOXXSFXBAC".replaceAllMapped(RegExp(r".{4}"), (match) =>"${match.group(0)}"); print("value: $value"); |
1 2 3 | var x= 'XPTOXXSFXBAC'; x = x.substring(0, 4) +"" + x.substring(4, 8) +"" + x.substring(8, x.length); print(x) ; |
现场演示:https://dartpad.dartlang.org/cold-sunset-7167
有一个dart程序包,它为String操作提供了一些帮助程序类。
GitHub:https://github.com/Ephenodrom/Dart-Basic-Utils
通过以下方式安装:
1 2 | dependencies: basic_utils: ^1.5.0 |
用法
1 2 3 4 5 6 7 | String s =""; s = StringUtils.addCharAtPosition("1234567890","-", 3); print(s); //"123-4567890" s = StringUtils.addCharAtPosition("1234567890","-", 3, repeat: true); print(s); //"123-456-789-0" s = StringUtils.addCharAtPosition("1234567890","-", 12); print(s); //"1234567890" |
附加信息 :
这些都是StringUtils类中的所有方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | String defaultString(String str, {String defaultStr = ''}); bool isNullOrEmpty(String s); bool isNotNullOrEmpty(String s); String camelCaseToUpperUnderscore(String s); String camelCaseToLowerUnderscore(String s); bool isLowerCase(String s); bool isUpperCase(String s); bool isAscii(String s); String capitalize(String s); String reverse(String s); int countChars(String s, String char, {bool caseSensitive = true}); bool isDigit(String s); bool equalsIgnoreCase(String a, String b); bool inList(String s, List<String> list, {bool ignoreCase = false}); bool isPalindrome(String s); String hidePartial(String s, {int begin = 0, int end, String replace ="*"}); String addCharAtPosition(String s, String char, int position,{bool repeat = false}); |
您的问题是不必要的特定:您只想在另一个Dart字符串中插入字符(或字符串)。空格并不特殊。
方法1
1 2 3 4 5 6 7 8 9 10 | 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(效率较低)
1 2 3 4 5 6 7 8 9 10 | 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; } |
方法2效率较低(它需要重复插入