在 Dart 中创建大写方法
Posted
技术标签:
【中文标题】在 Dart 中创建大写方法【英文标题】:Creating a capitalize Method in Dart 【发布时间】:2015-08-19 22:25:45 【问题描述】:我正在尝试在 dart 中创建一个方法,但遇到了障碍。我在看如何 .toUpperCase();和 .toLowerCase();完成了。我试图创建的方法是 .capitalize();
我想这样调用这个方法 String hello = "WORLD".capitalize(); //世界
这是我目前的代码
String capitalize()
return this.codeUnitAt(0).toUpperCase() + this.substring(1).toLowerCase();
当运行 String hello = "WORLD".capitalize();我收到以下错误
[38;5;124m[2015-6-4 11:37:13.011] 类“String”没有实例方法“capitalize”。
NoSuchMethodError:找不到方法:“大写” 接收者:“世界” 参数:[][0m
我知道我可以调用像String capitalize(String s) => s[0].toUpperCase() + s.substring(1);
这样的函数,但更愿意保持字符串操作调用相同。
谢谢,我感谢任何帮助:)
【问题讨论】:
你需要使用示例扩展方法来做到这一点,而 Dart 还没有(目前)。 【参考方案1】:您不能随意扩展 String 类。像这样使用它:
capitalize("WORLD");
【讨论】:
【参考方案2】:是的,不像 JS,你不能只改变 Dart 中的任何类。您只能扩展它。例如。您可以使用capitalize
方法创建MyString
类。但我不认为你想要它。只需使用方法capitalize
制作一些StringUtils.dart
库
【讨论】:
你不能在 Dart 中扩展基本类型,如int
、double
、num
、String
。 MyString
可能不是一个好的尝试(正如你提到的)。【参考方案3】:
由于 dart 现在更常见,因此 pub.dartlang.org 上提供了更多软件包。
我找到了一个不错的 dart 包,用于对字符串进行不同的操作。它还包含一个大写方法。
https://pub.dartlang.org/packages/basic_utils
只需添加依赖即可:
dependencies:
basic_utils: ^1.0.3
用法:
StringUtils.capitalize("helloworld"); // helloworld => Helloworld
它还包含其他有用的方法:
camelCaseToUpperUnderscore camelCaseToLowerUnderscore isAscii isNullOrEmpty ...【讨论】:
【参考方案4】:如果这仍然是一个问题,你可以简单地使用这个依赖:
dependencies:
text_tools: ^0.0.2
使用简单,举个例子:
//This will put the first letter in UpperCase, will print 'Name'
print(TextTools.toUppercaseFirstLetter(text: 'name'));
【讨论】:
以上是关于在 Dart 中创建大写方法的主要内容,如果未能解决你的问题,请参考以下文章
为啥 toList() 在 Dart 中创建一个 List<dynamic>?