我想检查Dart语言中字符串的首字母是否大写。我该如何实施?预先感谢。
答案 0 :(得分:3)
我能想到的最简单的方法是将字符串的首字母与大写字母进行比较。像这样:
bool isUpperCase(String string) {
if (string == null) {
return false;
}
if (string.isEmpty) {
return false;
}
if (string.trimLeft().isEmpty) {
return false;
}
String firstLetter = string.trimLeft().substring(0, 1);
if (double.tryParse(firstLetter) != null) {
return false;
}
return firstLetter.toUpperCase() == string.substring(0, 1);
}
更新了答案以考虑数字。
@Saed Nabil也是正确的,如果字符串以非字母的任何字符开头(数字除外),则此解决方案将返回true。
答案 1 :(得分:1)
如果尚未使用validators
库,则可以使用它。
然后使用此方法
isUppercase(String str)→布尔 检查字符串str是否为大写
请不要忘记将 依赖性 see documentation导入到pubspec.yaml
和您的代码import 'package:validators/validators.dart';
中。
if(isUppercase(value[0])){
... do some magic
}
您应检查value
是 不为空 和 不是 {{1} }首先是为了安全。像这样:
null
答案 2 :(得分:1)
检查此代码,它将返回实际的大写字母,否则将返回null
void main(){
var myString = "1s you said";
var firstCapital = firstCapitalLetter(myString);
if( firstCapital != null){
print("First Capital Letter is ${firstCapital}");
}else{
print("Not found");
}
}
String firstCapitalLetter(String myString){
final allCapitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //string.substring(0, 1).toUpperCase() == string.substring(0, 1) will not work with for ex. numbers;
if (myString == null) {
return null;
}
if (myString.isEmpty) {
return null;
}
if (myString.trimLeft().isEmpty) {
return null;
}
if( allCapitals.contains(myString[0])){
return myString[0];
}else{
return null;
}
}
这是Java语言的可选类型的典型情况,如果您喜欢功能样式代码,请检查此库 optional package