他の文字の大文字と小文字を変更せずに、文字列の最初の文字を大文字にするにはどうすればよいですか?
たとえば、「これは文字列です」は「これは文字列です」となるはずです。
他の文字の大文字と小文字を変更せずに、文字列の最初の文字を大文字にするにはどうすればよいですか?
たとえば、「これは文字列です」は「これは文字列です」となるはずです。
これをどこかにコピーします:
extension StringCasingExtension on String {
String toCapitalized() => length > 0 ?'${this[0].toUpperCase()}${substring(1).toLowerCase()}':'';
String toTitleCase() => replaceAll(RegExp(' +'), ' ').split(' ').map((str) => str.toCapitalized()).join(' ');
}
使用法:
// import StringCasingExtension
final helloWorld = 'hello world'.toCapitalized(); // 'Hello world'
final helloWorld = 'hello world'.toUpperCase(); // 'HELLO WORLD'
final helloWorldCap = 'hello world'.toTitleCase(); // 'Hello World'
void main() {
print(capitalize("this is a string"));
// displays "This is a string"
}
String capitalize(String s) => s[0].toUpperCase() + s.substring(1);
DartPad で実行されているこのスニペットを参照してください: https://dartpad.dartlang.org/c8ffb8995abe259e9643
短い表記法も使用して、null および空の文字列のケースを確認するには、次のようにします。
String capitalizeFirstLetter(String s) =>
(s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;
奇妙なことに、これは最初から dart では利用できません。以下は a を大文字にする拡張String
です:
extension StringExtension on String {
String capitalized() {
if (this.isEmpty) return this;
return this[0].toUpperCase() + this.substring(1);
}
}
最初に が空でないことを確認しString
、最初の文字を大文字にして残りを追加します
使用法:
import "path/to/extension/string_extension_file_name.dart";
var capitalizedString = '${'alexander'.capitalized()} ${'hamilton, my name is'.capitalized()} ${'alexander'.capitalized()} ${'hamilton'.capitalized()}');
// Print result: "Alexander Hamilton, my name is Alexander Hamilton"
文字列が null または空かどうかも確認する必要があります。
String capitalize(String input) {
if (input == null) {
throw new ArgumentError("string: $input");
}
if (input.length == 0) {
return input;
}
return input[0].toUpperCase() + input.substring(1);
}
var orig = "this is a string";
var changed = orig.substring(0, 1).toUpperCase + orig.substring(1)
これを使用できます:
extension EasyString on String {
String toCapitalCase() {
var lowerCased = this.toLowerCase();
return lowerCased[0].toUpperCase() + lowerCased.substring(1);
}
}