我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
当前回答
你可以使用这个函数:
String capitalize(String str) {
return str
.split(' ')
.map((word) => word.substring(0, 1).toUpperCase() + word.substring(1))
.join(' ');
}
其他回答
有一个包含该函数的utils包。它有一些更好的方法来操作字符串。
安装方法:
dependencies:
basic_utils: ^1.2.0
用法:
String capitalized = StringUtils.capitalize("helloworld");
Github:
https://github.com/Ephenodrom/Dart-Basic-Utils
检查空字符串大小写,同样使用短符号:
String capitalizeFirstLetter(String s) =>
(s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;
正如ephendrom之前提到的, 你可以在pubspeck中添加basic_utils包。Yaml和使用它在你的dart文件,像这样:
StringUtils.capitalize("yourString");
对于单个函数来说,这是可以接受的,但在更大的操作链中,这就变得很尴尬了。
正如Dart语言文档中解释的那样:
doMyOtherStuff(doMyStuff(something.doStuff()).doOtherStuff())
该代码的可读性远远低于:
something.doStuff().doMyStuff().doOtherStuff().doMyOtherStuff()
代码也不太容易被发现,因为IDE可以在something.doStuff()之后建议使用doMyStuff(),但不太可能建议在表达式周围使用doMyOtherStuff(…)。
基于这些原因,我认为你应该为String类型添加一个扩展方法(你可以从dart 2.6开始这样做!)
/// Capitalize the given string [s]
/// Example : hello => Hello, WORLD => World
extension Capitalized on String {
String capitalized() => this.substring(0, 1).toUpperCase() + this.substring(1).toLowerCase();
}
并使用点符号调用它:
'yourString'.capitalized()
或者,如果你的值可以为空,用'?在祷文中写道:
myObject.property?.toString()?.capitalized()
下面是我使用dart String方法的答案。
String name = "big";
String getFirstLetter = name.substring(0, 1);
String capitalizedFirstLetter =
name.replaceRange(0, 1, getFirstLetter.toUpperCase());
print(capitalizedFirstLetter);
extension StringExtension on String {
String capitalize() {
return this
.toLowerCase()
.split(" ")
.map((word) => word[0].toUpperCase() + word.substring(1, word.length))
.join(" ");
}
}
对于感兴趣的人,这应该适用于任何字符串