Как загладить первую букву строки в дротике?

Как я могу использовать первый символ строки, не изменяя случай любой из других букв?

Например, "это строка" должна указывать "Это строка".

Ответ 1

main() {
  String s = 'this is a string';
  print('${s[0].toUpperCase()}${s.substring(1)}');
}

Ответ 2

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.

Ответ 3

Синтаксический анализ подстроки в других ответах не учитывает различия в локалях. Функция toBeginningOfSentenceCase() в пакете intl/intl.dart обрабатывает базовый регистр предложений и точку "i" на турецком и азербайджанском языках.

import 'package:intl/intl.dart';
...
String sentence = toBeginningOfSentenceCase('this is a string'); // This is a string

Ответ 4

Вы также должны проверить, является ли строка пустой или пустой.

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);
}

Ответ 5

Чтобы проверить регистры с нулевой и пустой строкой, также используйте короткие обозначения:

  String capitalizeFirstLetter(String s) =>
  (s?.isNotEmpty ?? false) ? '${s[0].toUpperCase()}${s.substring(1)}' : s;

Ответ 6

var orig = "this is a string";
var changed = orig.substring(0, 1).toUpperCase + orig.substring(1)

Ответ 7

Существует пакет утилит, который охватывает эту функцию. У него есть еще несколько приятных методов для работы со строками.

Установите его с помощью:

dependencies:
  basic_utils: ^1.2.0

Использование:

String capitalized = StringUtils.capitalize("helloworld");

Github:

https://github.com/Ephenodrom/Dart-Basic-Utils

Ответ 8

Некоторые из наиболее популярных других ответов, похоже, не относятся к null и ''. Я предпочитаю не сталкиваться с такими ситуациями в клиентском коде, я просто хочу получить String взамен чего бы то ни было - даже если это означает пустой случай в случае null.

String upperCaseFirst(String s) => (s??'').length<1 ? '' : s[0].toUpperCase() + s.substring(1)

Ответ 9

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!');
});