如何在不更改任何其他字母大小写的情况下大写字符串的第一个字符?
例如,“这是一个字符串”应为“这是一个字符串”。
Answers:
从dart 2.6版开始,dart支持扩展:
extension StringExtension on String {
String capitalize() {
return "${this[0].toUpperCase()}${this.substring(1)}";
}
}
因此,您可以像这样呼叫您的分机:
import "string_extension.dart";
var someCapitalizedString = "someString".capitalize();
if (isEmpty) return this
为第一行。
将此复制到某处:
extension CapExtension on String {
String get inCaps => '${this[0].toUpperCase()}${this.substring(1)}';
String get allInCaps => this.toUpperCase();
String get capitalizeFirstofEach => this.split(" ").map((str) => str.capitalize).join(" ");
}
用法:
final helloWorld = 'hello world'.inCaps; // 'Hello world'
final helloWorld = 'hello world'.allInCaps; // 'HELLO WORLD'
final helloWorld = 'hello world'.capitalizeFirstofEach; // 'Hello World'
旧答案:
main() {
String s = 'this is a string';
print('${s[0].toUpperCase()}${s.substring(1)}');
}
str.capitalize
是没有定义。所以您使用str.inCaps
其他答案中的子字符串分析不考虑区域差异。程序包中的toBeginningOfSentenceCase()函数intl/intl.dart
处理基本的句子大小写以及土耳其语和阿塞拜疆语中带点划线的“ i”。
import 'package:intl/intl.dart';
...
String sentence = toBeginningOfSentenceCase('this is a string'); // This is a string
有一个utils软件包涵盖了此功能。它有一些更不错的字符串操作方法。
用安装:
dependencies:
basic_utils: ^1.2.0
用法:
String capitalized = StringUtils.capitalize("helloworld");
Github:
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
如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起即可!),如下所示:
/// Example : hello => Hello, WORLD => World
extension Capitalized on String {
String capitalized() => this.substring(0, 1).toUpperCase() + this.substring(1).toLowerCase();
}```
and call it using dot notation:
`'yourString'.capitalized()`
or, if your value can be null, replacing the dot with a '?.' in the invocation:
`myObject.property?.toString()?.capitalized()`
该代码对我有用。
String name = 'amina';
print(${name[0].toUpperCase()}${name.substring(1).toLowerCase()});
这是使用String类Method在dart中大写String的另一种选择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
奇怪的是,飞镖一开始是不可用的。以下是大写字母的扩展名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"
var orig = "this is a string";
var changed = orig.substring(0, 1).toUpperCase + orig.substring(1)
您可以使用Text_Tools包,使用简单:
https://pub.dev/packages/text_tools
您的代码将如下所示:
//This will print 'This is a string
print(TextTools.toUppercaseFirstLetter(text: 'this is a string'));
String fullNameString =
txtControllerName.value.text.trim().substring(0, 1).toUpperCase() +
txtControllerName.value.text.trim().substring(1).toLowerCase();
特此分享我的答案
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;
}
return "${this[0].toUpperCase()}${this.substring(1).toLowerCase()}";
。如果不是,它将正确地大写“ this”而不是“ THIS”。