在 dart 语言中将驼峰式字符串转换为下划线

问题描述 投票:0回答:2

在java 9中,我们可以简单地将

camelCase
转换为下划线,如
camel_case

String text = "camelCase";
Matcher m = Pattern.compile("(?<=[a-z])[A-Z]").matcher(text);
String result = m.replaceAll(match -> "_" + match.group().toLowerCase());

现在我的问题是 dart 中这段代码的等价物是什么?

string flutter dart
2个回答
19
投票

您可以使用RegExp和方法replaceAllMapped

String text = 'camelCase';
final exp = RegExp('(?<=[a-z])[A-Z]');
String result = text.replaceAllMapped(exp, (m) => '_${m.group(0)}').toLowerCase();

7
投票

如果已经有一个包,就不要重新发明代码:

Github:https://github.com/Ephenodrom/Dart-Basic-Utils 酒吧开发:https://pub.dev/packages/basic_utils

安装:

dependencies:
  basic_utils: ^1.5.1

用法:

String result = StringUtils.camelCaseToLowerUnderscore("camelCase");
print(result); // camel_case

StringUtils 类中的其他有用方法:

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});
© www.soinside.com 2019 - 2024. All rights reserved.