我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
我如何大写字符串的第一个字符,而不改变任何其他字母的情况?
例如,“this is a string”应该给出“this is a string”。
当前回答
这个代码适用于我。
String name = 'amina';
print(${name[0].toUpperCase()}${name.substring(1).toLowerCase()});
其他回答
我使用了不同的实现:
创建一个类:
import 'package:flutter/services.dart';
class FirstLetterTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(
//text: newValue.text?.toUpperCase(),
text: normaliseName(newValue.text),
selection: newValue.selection,
);
}
/// Fixes name cases; Capitalizes Each Word.
String normaliseName(String name) {
final stringBuffer = StringBuffer();
var capitalizeNext = true;
for (final letter in name.toLowerCase().codeUnits) {
// UTF-16: A-Z => 65-90, a-z => 97-122.
if (capitalizeNext && letter >= 97 && letter <= 122) {
stringBuffer.writeCharCode(letter - 32);
capitalizeNext = false;
} else {
// UTF-16: 32 == space, 46 == period
if (letter == 32 || letter == 46) capitalizeNext = true;
stringBuffer.writeCharCode(letter);
}
}
return stringBuffer.toString();
}
}
然后你导入类到任何页面,你需要例如在TextField的inputFormatters属性,只是调用上面的小部件:
TextField(
inputformatters: [FirstLetterTextFormatter()]),
),
我发现的另一个不健康的解决这个问题的方法是
String myName = "shahzad";
print(myName.substring(0,1).toUpperCase() + myName.substring(1));
这将产生同样的效果,但这是一种相当肮脏的方式。
你可以使用Text_Tools包,使用简单:
https://pub.dev/packages/text_tools
你的代码应该是这样的:
//This will print 'This is a string
print(TextTools.toUppercaseFirstLetter(text: 'this is a string'));
下面是代码,如果你想在一个句子中大写每个单词,例如,如果你想大写你客户的fullName的每个部分,你可以简单地在你的模型类中使用以下扩展:
extension StringExtension on String {
String capitalizeFirstLetter() {
return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
}
}
只需使用这个getter
String get formalFullName => fullName.capitalizeFirstLetter().splitMapJoin(RegExp(r' '),
onNonMatch: (str) => str.toString().capitalize());
希望这对大家有所帮助
截至2021年3月23日,Flutter 2.0.2
只需使用yourtext.capitalizeFirst