我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
当前回答
其他答案中的子字符串解析不考虑地区差异。 intl/intl中的toBeginningOfSentenceCase()函数。dart包处理土耳其语和阿塞拜疆语中的基本句型和虚线“i”。
import 'package:intl/intl.dart' show toBeginningOfSentenceCase;
print(toBeginningOfSentenceCase('this is a string'));
其他回答
一些更流行的其他答案似乎不处理null和”。我更喜欢不必在客户端代码中处理这些情况,我只是想要一个字符串返回无论什么-即使这意味着一个空的情况下为null。
String upperCaseFirst(String s) => (s??'').length<1 ? '' : s[0].toUpperCase() + s.substring(1)
从dart 2.6版本开始,dart支持扩展:
extension StringExtension on String {
String capitalize() {
return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
}
}
所以你可以像这样调用你的扩展:
import "string_extension.dart";
var someCapitalizedString = "someString".capitalize();
我发现的另一个不健康的解决这个问题的方法是
String myName = "shahzad";
print(myName.substring(0,1).toUpperCase() + myName.substring(1));
这将产生同样的效果,但这是一种相当肮脏的方式。
最简单的答案是:
首先使用下标将字符串的第一个字母大写,然后将字符串的其余部分拼接起来。
这里username是字符串。
用户名[0].toUpperCase() + username.substring(1);
检查空字符串大小写,同样使用短符号:
String capitalizeFirstLetter(String s) =>
(s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;