假设我们将名称设置为“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)
请允许我给出一个比其他提到的更短的解决方案:
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)部分确保我们最多只接受两个字母。
只需稍加修改,因为您只需要第一个字母
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。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)
| 归档时间: |
|
| 查看次数: |
5334 次 |
| 最近记录: |