如何从颤动飞镖中的单词中获取第一个字符?

ben*_*ter 3 dart

假设我们将名称设置为“Ben Bright”。我想输出给用户“BB”,每个单词的第一个字符。我试过这个split()方法,但我用飞镖没能做到。

String getInitials(bank_account_name) {
  List<String> names = bank_account_name.split(" ");
  String initials;
  for (var i = 0; i < names.length; i++) {
    initials = '${names[i]}';
  }
  return initials;
}
Run Code Online (Sandbox Code Playgroud)

jul*_*101 8

请允许我给出一个比其他提到的更短的解决方案:

void main() {
  print(getInitials('')); //
  print(getInitials('Ben')); // B
  print(getInitials('Ben ')); // B
  print(getInitials('Ben Bright')); // BB
  print(getInitials('Ben Bright Big')); // BB
}

String getInitials(String bank_account_name) => bank_account_name.isNotEmpty
    ? bank_account_name.trim().split(' ').map((l) => l[0]).take(2).join()
    : '';
Run Code Online (Sandbox Code Playgroud)

take(2)部分确保我们最多只接受两个字母。


Sun*_*tam 6

只需稍加修改,因为您只需要第一个字母

String getInitials(bank_account_name) {
  List<String> names = bank_account_name.split(" ");
  String initials = "";
  int numWords = 2;
  
  if(numWords < names.length) {
    numWords = names.length;
  }
  for(var i = 0; i < numWords; i++){
    initials += '${names[i][0]}';
  }
  return initials;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

  • 您可以设置 的值num_words来打印这么多单词的缩写。
  • 如果bank_account_name是 0 个字母的单词,则返回一个空字符串
  • 如果bank_account_name包含的单词少于num_words,则打印 中所有单词的首字母bank_account_name


Cop*_*oad 5

var string = 'William Henry Gates';

var output = getInitials(string: string, limitTo: 1); // W
var output = getInitials(string: string, limitTo: 2); // WH
var output = getInitials(string: string); // WHG
Run Code Online (Sandbox Code Playgroud)
var string = 'William Henry Gates';

var output = getInitials(string: string, limitTo: 1); // W
var output = getInitials(string: string, limitTo: 2); // WH
var output = getInitials(string: string); // WHG
Run Code Online (Sandbox Code Playgroud)