如何大写省道字符串的第一个字母?

如何在不改变其他任何字母大小写的情况下,将字符串的第一个字符大写?

例如,“ This is a string”应该给出“ This is a string”。

144700 次浏览

把这个抄下来:

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上的这个代码片段

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

您还应该检查字符串是空还是空。

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;

其他答案中的子字符串解析不考虑区域设置方差。 intl/intl.dart软件包中的 开始判决案例()功能处理基本的句子大小写和土耳其语和阿塞拜疆语中的虚线“ i”。

import 'package:intl/intl.dart' show toBeginningOfSentenceCase;


print(toBeginningOfSentenceCase('this is a string'));

有一个 utils 包涵盖了这个函数。它有一些更好的方法来操作字符串。

用以下方法安装:

dependencies:
basic_utils: ^1.2.0

用法:

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

Github:

Https://github.com/ephenodrom/dart-basic-utils

一些比较流行的其他答案似乎不能处理 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!');
});
void allWordsCapitilize (String str) {
return str.toLowerCase().split(' ').map((word) {
String leftText = (word.length > 1) ? word.substring(1, word.length) : '';
return word[0].toUpperCase() + leftText;
}).join(' ');
}
allWordsCapitilize('THIS IS A TEST'); //This Is A Test

自 Dart 2.6版本以来,Dart 支持扩展:

extension StringExtension on String {
String capitalize() {
return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
}
}

所以你可以这样打电话给你的分机:

import "string_extension.dart";


var someCapitalizedString = "someString".capitalize();

正如 Ephenodrom 之前提到的, 您可以在 pubspeck.yaml 中添加 basic _ utils 包,并在 dart 文件中使用它,如下所示:

StringUtils.capitalize("yourString");

对于单个函数来说,这是可以接受的,但是在更大的操作链中,这就变得很棘手了。

正如 飞镖语言档案编制中所解释的:

doMyOtherStuff(doMyStuff(something.doStuff()).doOtherStuff())

这个代码比 不太容易读懂要多得多:

something.doStuff().doMyStuff().doOtherStuff().doMyOtherStuff()

代码也是 更不容易被发现,因为 IDE 可以在 something.doStuff()之后建议使用 doMyStuff(),但是不太可能建议在表达式周围使用 doMyOtherStuff(…)

出于这些原因,我认为应该向 String 类型添加一个扩展方法(从 dart 2.6开始就可以这样做!)像这样:

/// Capitalize the given string [s]
/// Example : hello => Hello, WORLD => World
extension Capitalized on String {
String capitalized() => this.substring(0, 1).toUpperCase() + this.substring(1).toLowerCase();
}

使用点符号称之为:

'yourString'.capitalized()

或者,如果您的值可以为 null,那么在调用中将点替换为’? .’:

myObject.property?.toString()?.capitalized()

您可以在颤动中使用此包 ReCase 它提供了各种案例转换功能,比如:

  • 蛇箱
  • Dot Case
  • 路径/大小写
  • Param-case
  • PascalCase
  • 头部
  • 标题案件
  • 骆驼箱
  • 判刑案件
  • 常量 _ 情况

    ReCase sample = new ReCase('hello world');
    
    
    print(sample.sentenceCase); // Prints 'Hello world'
    

这个密码对我有用。

String name = 'amina';


print(${name[0].toUpperCase()}${name.substring(1).toLowerCase()});

这是另一个替代大写字符串在省道使用字符串类方法 splitMapJoin:

var str = 'this is a test';
str = str.splitMapJoin(RegExp(r'\w+'),onMatch: (m)=> '${m.group(0)}'.substring(0,1).toUpperCase() +'${m.group(0)}'.substring(1).toLowerCase() ,onNonMatch: (n)=> ' ');
print(str);  // This Is A Test

你可以使用字符串库的大写()方法,它现在在0.1.2版本中可用, 并确保在 pubspec.yaml 中添加依赖项:

dependencies:
strings: ^0.1.2

然后导入 Dart 文件:

import 'package:strings/strings.dart';

现在你可以使用下面的原型方法:

String capitalize(String string)

例如:

print(capitalize("mark")); => Mark
String fullNameString =
txtControllerName.value.text.trim().substring(0, 1).toUpperCase() +
txtControllerName.value.text.trim().substring(1).toLowerCase();

奇怪的是,这在 Dart 中一开始就没有。下面是 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"

下面是我使用 dart String 方法得到的答案。

String name = "big";
String getFirstLetter = name.substring(0, 1);
String capitalizedFirstLetter =
name.replaceRange(0, 1, getFirstLetter.toUpperCase());
print(capitalizedFirstLetter);

在此分享我的答案

void main() {
var data = allWordsCapitilize(" hi ram good day");
print(data);
}


String allWordsCapitilize(String value) {
var result = value[0].toUpperCase();
for (int i = 1; i < value.length; i++) {
if (value[i - 1] == " ") {
result = result + value[i].toUpperCase();
} else {
result = result + value[i];
}
}
return result;
}

您可以使用 Text _ Tools 包,使用起来很简单:

Https://pub.dev/packages/text_tools

你的代码应该是这样的:

//This will print 'This is a string
print(TextTools.toUppercaseFirstLetter(text: 'this is a string'));

最简单的答案是:

首先使用索引将字符串的第一个字母设置为大写,然后将字符串的其余部分连接起来。

这里的用户名是字符串。

Username [0] . toUpperCase () + username.substring (1) ;

我发现解决这个问题的另一个不健康的方法是

String myName = "shahzad";


print(myName.substring(0,1).toUpperCase() + myName.substring(1));

这将产生相同的效果,但是这是相当肮脏的方式做到这一点。

我已经用了汉娜 · 斯塔克的答案,但是如果字符串是空的,它会崩溃应用程序,所以这里有一个改进版本的解决方案,带有扩展名:

extension StringExtension on String {
String capitalize() {
if(this.length > 0) {
return "${this[0].toUpperCase()}${this.substring(1)}";
}
return "";
}
}

使用字符而不是代码单位

如文章 Dart 字符串操作正确所述(参见场景4) ,无论何时处理用户输入,都应该使用 characters而不是索引。

// import 'package:characters/characters.dart';


final sentence = 'e\u0301tienne is eating.'; // étienne is eating.
final firstCharacter = sentence.characters.first.toUpperCase();
final otherCharacters = sentence.characters.skip(1);
final capitalized = '$firstCharacter$otherCharacters';
print(capitalized); // Étienne is eating.

在这个特殊的例子中,即使您使用了索引,它仍然可以工作,但是养成使用 characters的习惯仍然是一个好主意。

角色软件包带有 Flutter,所以不需要导入。在纯 Dart 项目中,您需要添加导入,但不必向 pubspec.yaml 添加任何内容。

截至2021年3月23日,Flutter 2.0.2

yourtext.capitalizeFirst

我使用了一种不同的实现:

  1. 创建一个类:
import 'package:flutter/services.dart';


class FirstLetterTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(
//text: newValue.text?.toUpperCase(),
text: normaliseName(newValue.text),
selection: newValue.selection,
);
}


/// Fixes name cases; Capitalizes Each Word.
String normaliseName(String name) {
final stringBuffer = StringBuffer();


var capitalizeNext = true;
for (final letter in name.toLowerCase().codeUnits) {
// UTF-16: A-Z => 65-90, a-z => 97-122.
if (capitalizeNext && letter >= 97 && letter <= 122) {
stringBuffer.writeCharCode(letter - 32);
capitalizeNext = false;
} else {
// UTF-16: 32 == space, 46 == period
if (letter == 32 || letter == 46) capitalizeNext = true;
stringBuffer.writeCharCode(letter);
}
}


return stringBuffer.toString();
}
}

然后将类导入到任何需要的页面中,例如在 TextField 的 inputFormatter 属性中,只需像这样调用上面的小部件:


TextField(
inputformatters: [FirstLetterTextFormatter()]),
),


尝试这个代码大写任何字符串的第一个字母在 Dart-Flutter

Example: hiii how are you


Code:
String str="hiii how are you";
Text( '${str[0].toUpperCase()}${str.substring(1)}',)`


Output: Hiii how are you

你可以用这个:

extension EasyString on String {
String toCapitalCase() {
var lowerCased = this.toLowerCase();
return lowerCased[0].toUpperCase() + lowerCased.substring(1);
}
}

很晚了,但我用,


String title = "some string with no first letter caps";
    

title = title.replaceFirst(title[0], title[0].toUpperCase()); // Some string with no...


extension StringExtension on String {
String capitalize() {
return this
.toLowerCase()
.split(" ")
.map((word) => word[0].toUpperCase() + word.substring(1, word.length))
.join(" ");
}
}

对于感兴趣的任何人,这应该适用于任何字符串

Final helloWorld = ‘ hello world’. toUpperCase () ; 文字(helloWorld) ;

已进入射程。
Dart > 2.16.1的惯用语

作为一种功能

String capitalize(String str) =>
str.isNotEmpty
? str[0].toUpperCase() + str.substring(1)
: str;

作为延期

extension StringExtension on String {
String get capitalize =>
isNotEmpty
? this[0].toUpperCase() + substring(1)
: this;
}

你可以使用这个函数:

String capitalize(String str) {
return str
.split(' ')
.map((word) => word.substring(0, 1).toUpperCase() + word.substring(1))
.join(' ');
}

下面是代码,如果你想大写一个句子中的每个单词,例如,如果你想大写客户的 fullName 的每个部分,简单地说,你可以在你的模型类中使用以下扩展:

extension StringExtension on String {
String capitalizeFirstLetter() {
return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
}
}

并简单地使用这个 getter 函数

String get formalFullName =>  fullName.capitalizeFirstLetter().splitMapJoin(RegExp(r' '),
onNonMatch: (str) => str.toString().capitalize());

希望这能帮到别人

capitalize("your text");

只需将该文本包装为大写的小部件,它就会使您的文本(您的文本)为(您的文本) .. 祝你今天愉快

没有任何扩展的简单:

title = "some title without first capital"


title.replaceRange(0, 1, title[0].toUpperCase())


// Result: "Some title without first capital"
String? toCapitalize(String? input) {
if (input == null || input.isEmpty) return input;
return '${input[0].toUpperCase()}${input.substring(1).toLowerCase()}';
}

或延伸部分:

extension StringExtension on String {
String? toCapitalize() {
if (this == null || this.isEmpty) return this;
return '${this[0].toUpperCase()}${this.substring(1).toLowerCase()}';
}
}