我想检查Dart语言中字符串的第一个字母是否是大写。我该如何实现?谢谢。
我能想到的最简单方法是将字符串的第一个字母与其大写形式进行比较。类似这样的方式:
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。
如果你还没有使用validators
库,你可以使用它。
然后使用这个方法:
isUppercase(String str) → bool 检查字符串str是否为大写
别忘了在pubspec.yaml
文件和你的代码中导入依赖项,请参阅文档,并且导入'package:validators/validators.dart';
。
if(isUppercase(value[0])){
... do some magic
}
value
是否既非空又非null
,以确保安全。像这样:if(value != null && value.isNotEmpty && isUppercase(value[0])){
... do amazing things
}
value.isNotEmpty
而不是否定!value.isEmpty
呢? - flarkmarup使用codeUnites验证字符的ASCII码。
添加此扩展名。
extension Case on String{
// isuppercase
bool isUpperCase(){
int ascii = codeUnitAt(0);
return ascii >= 65 && ascii <= 90;
}
// islowercase
bool isLowerCase(){
int ascii = codeUnitAt(0);
return ascii >= 97 && ascii <= 122;
}
}
像这样使用它
String letter = 'A';
print(letter.isUpperCase()); // true
bool isUppercase(String str){
return str == str.toUpperCase();
}
这似乎是一种优雅的检查大写字母的方式
String s='Hello';
bool isUpper = isUppercase(s[0]);
print(isUpper); //true
isUpper = isUppercase(s[1]);
print(isUpper); //false
检查这段代码,它将返回实际的大写字母,否则将返回 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类型的典型案例,请查看此库,如果您喜欢函数式风格的代码 optional package
RegExp _alpha = new RegExp(r'^[a-zA-Z]+$');
。我已经解释了为什么我提出了这个解决方案,其他解决方案在字符串以数字开头时会给出错误的答案。 - Saed Nabil