Как я могу использовать первый символ строки, не изменяя случай любой из других букв?
Например, "это строка" должна указывать "Это строка".
Как я могу использовать первый символ строки, не изменяя случай любой из других букв?
Например, "это строка" должна указывать "Это строка".
main() {
String s = 'this is a string';
print('${s[0].toUpperCase()}${s.substring(1)}');
}
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
В качестве альтернативы вы можете использовать набор строк, см. capitalize.
Синтаксический анализ подстроки в других ответах не учитывает различия в локалях.
Функция toBeginningOfSentenceCase() в пакете intl/intl.dart
обрабатывает базовый регистр предложений и точку "i" на турецком и азербайджанском языках.
import 'package:intl/intl.dart';
...
String sentence = toBeginningOfSentenceCase('this is a string'); // This is a string
Вы также должны проверить, является ли строка пустой или пустой.
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);
}
Чтобы проверить регистры с нулевой и пустой строкой, также используйте короткие обозначения:
String capitalizeFirstLetter(String s) =>
(s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;
var orig = "this is a string";
var changed = orig.substring(0, 1).toUpperCase + orig.substring(1)
Существует пакет утилит, который охватывает эту функцию. У него есть еще несколько приятных методов для работы со строками.
Установите его с помощью:
dependencies:
basic_utils: ^1.2.0
Использование:
String capitalized = StringUtils.capitalize("helloworld");
Github:
Некоторые из наиболее популярных других ответов, похоже, не относятся к null
и ''
. Я предпочитаю не сталкиваться с такими ситуациями в клиентском коде, я просто хочу получить String
взамен чего бы то ни было - даже если это означает пустой случай в случае null
.
String upperCaseFirst(String s) => (s??'').length<1 ? '' : s[0].toUpperCase() + s.substring(1)
String capitalize(String s) => (s != null && s.length > 1)
? s[0].toUpperCase() + s.substring(1)
: s != null ? s.toUpperCase() : null;
Он проходит тесты:
test('null input', () {
expect(capitalize(null), null);
});
test('empty input', () {
expect(capitalize(''), '');
});
test('single char input', () {
expect(capitalize('a'), 'A');
});
test('crazy input', () {
expect(capitalize('?a!'), '?a!');
});
test('normal input', () {
expect(capitalize('take it easy bro!'), 'Take it easy bro!');
});