有没有办法将下面代码中的toLowerCase方法更改为substring方法



有没有办法将下面代码中的toLowerCase方法更改为substring方法?

这是我的非最优解决方案:

void main() {
List<String> users = ['anna', 'viKtor', 'Mike', 'aleX', 'dan'];
var lowers = users.map((item) => item.toLowerCase()).toList();
final letters = lowers.map((item) => item[0].toUpperCase()).toList();
}

这里有一项任务:

有一组用户。从中创建一个新数组,使名称以大写字母开头,其余字符使用小写。例如,安娜,维克多等等

List<String> users = ['anna', 'viKtor', 'Mike', 'aleX', 'dan'];

类似的东西?

void main() {
final users = ['anna', 'viKtor', 'Mike', 'aleX', 'dan'];
final lowers = users.map((e) {
final stringBuffer = StringBuffer();
for (var i = 0; i < e.length; i++) {
if (i == 0) {
stringBuffer.write(e[i].toUpperCase());
} else {
stringBuffer.write(e[i].toLowerCase());
}
}
return stringBuffer.toString();
}).toList();
print(lowers); // [Anna, Viktor, Mike, Alex, Dan]
}

让我们假设这是一个简单的情况。然后你可以做:

String capitalizeWord(String word) => 
characters[0].toUpperCase() + characters.substrin(1).toLowerCase();
// And use it as:
List<String> users = ['anna', 'viKtor', 'Mike', 'aleX', 'dan'];
var capitalizedUsers = [for (var user in users) capitalizeWord(user)];

这做出了许多假设:

  • 字符只占用一个代码单元
  • 输入是一个单词
  • 前面没有空格

如果你确定总是这样,你就完了。

如果没有,您可能需要使用characters包来获取第一个字符。

import "package:characters/characters.dart";
String capitalizeWord(String word) =>
word.characters.first.toUpperCase() + "${word.characters.skip(1)}".toLowerCase();

这将正确地将多代码单元字符拆分为第一个字符和其余字符

最新更新