在Dart中检查字符串的首字母是否大写

时间:2019-05-15 18:26:53

标签: dart flutter

我想检查Dart语言中字符串的首字母是否大写。我该如何实施?预先感谢。

3 个答案:

答案 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