我目前正在使用這個字串擴展來大寫 textField 中每個單詞的字母:
"happy sunshine" .toTitleCase()給"Happy Sunshine"
extension StringExtension on String {
String toTitleCase() => replaceAll(RegExp(' '), ' ')
.split(' ')
.map((str) => str.toCapitalized())
.join(' ');
String toCapitalized() =>
length > 0 ? '${this[0].toUpperCase()}${substring(1).toLowerCase()}' : '';
}
但我也想-用相同的toTitleCase方法將連字符后的字母大寫
例如:"very-happy sunshine" .toTitleCase()會給"Very-Happy Sunshine"
目前.toTitleCase()給出"Very-happy Sunshine":(
uj5u.com熱心網友回復:
我確信具有正則運算式專業知識的向導可以做得更好,但我認為這個解決方案可以解決您的問題:
void main() {
print('happy sunshine'.toTitleCase()); // Happy Sunshine
print('very-happy sunshine'.toTitleCase()); // Very-Happy Sunshine
}
extension StringExtension on String {
String toTitleCase() => replaceAllMapped(
RegExp(r'(?<= |-|^).'), (match) => match[0]!.toUpperCase());
}
如果您多次呼叫該方法,您可能會考慮將其RegExp作為快取值,例如:
extension StringExtension on String {
static final RegExp _toTitleCaseRegExp = RegExp(r'(?<= |-|^).');
String toTitleCase() =>
replaceAllMapped(_toTitleCaseRegExp, (match) => match[0]!.toUpperCase());
}
uj5u.com熱心網友回復:
你也可以調整你的代碼。但是我在我的專案中的某個地方使用了同樣的東西,所以你也可以做這樣的事情。
作業:首先我創建一個空陣列回圈遍歷特定字串中的每個字符并檢查是否space (" ")和hyphen ("-")是current_position - 1然后我將其current_position設為大寫。
String capitalize(String s) {
String result = "";
for (int i = 0; i < s.length; i ) {
if (i == 0) {
result = s[i].toUpperCase();
} else if (s[i - 1] == " ") {
result = s[i].toUpperCase();
} else if (s[i - 1] == "-") {
result = s[i].toUpperCase();
} else {
result = s[i];
}
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420674.html
標籤:
