在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 中这段代码的等价物是什么?
您可以使用RegExp和方法replaceAllMapped:
String text = 'camelCase';
final exp = RegExp('(?<=[a-z])[A-Z]');
String result = text.replaceAllMapped(exp, (m) => '_${m.group(0)}').toLowerCase();
如果已经有一个包,就不要重新发明代码:
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});