flutter - 如何将句号“.”后第一个单词的TextField值首字母大写?
问题描述
这样的事情可能吗?
例如:“我最喜欢的电影是矩阵。我认为……”
之前已经问过类似的问题,但它们是简单的大写第一个单词的第一个字母,而不是更多
此代码仅适用于第一个单词的第一个字母,无法理解“。”
extension CapExtension on String {
String get inCaps =>
this.length > 0 ? '${this[0].toUpperCase()}${this.substring(1)}' : '';
String get capitalizeFirstofEach => this
.replaceAll(RegExp(' +'), ' ')
.split(" ")
.map((str) => str.inCaps)
.join(" ");
}
class CapitalCaseTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(
text: newValue.text.inCaps,
selection: newValue.selection,
);
}
}
TextFormField(
inputFormatters: [
CapitalCaseTextFormatter()
]
)
解决方案
使用它来大写每个句子的第一个单词
extension CapExtension on String {
String capitalizeSentence() {
// Each sentence becomes an array element
var sentences = this.split('.');
// Initialize string as empty string
var output = '';
// Loop through each sentence
for (var sen in sentences) {
// Trim leading and trailing whitespace
var trimmed = sen.trim();
// Capitalize first letter of current sentence
var capitalized = "${trimmed[0].toUpperCase() + trimmed.substring(1)}";
// Add current sentence to output with a period
output += capitalized + ". ";
}
return output;
}
}
// 文本输入格式化程序
class CapitalCaseTextFormatter extends TextInputFormatter {
@override
TextEditingValue formatEditUpdate(
TextEditingValue oldValue, TextEditingValue newValue) {
return TextEditingValue(
text: newValue.text.capitalizeSentence,
selection: newValue.selection,
);
}
}
推荐阅读
- c++ - 取一个浮点值并立即在模板 c++ 中结束程序
- c++ - 容器模板参数的性能比较?
- r - 如何重新排序 data.table 中的列并打印其结果?
- python - 当函数包含函数未使用的参数时,在函数中使用 kwargs
- apache-spark - pyspark Datetype() 在创建数据框期间
- c# - 上下文单击 Visual Studio 扩展中的本地菜单时恢复表达式
- python - 在 Jupyter Notebook 中导入可视化模块失败
- java - 制作第二行和第三行偏移的矩形网格?
- eclipse - 在黄瓜中获取 NoClassDefFoundError
- python - Pandas 计算按月和年分组的就业人数百分比