在 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 中扩展基本类型,如 intdoublenumStringMyString 可能不是一个好的尝试(正如你提到的)。【参考方案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 中创建大写方法的主要内容,如果未能解决你的问题,请参考以下文章

Dart,如何在你自己的函数中创建一个返回的未来?

为啥 toList() 在 Dart 中创建一个 List<dynamic>?

如何在Flutter / Dart中创建异步回调?

如何编辑列表中的每个项目并在 dart 中创建一个新项目

部署颤振到 github 页面给出“带有大写的存储库名称”不是有效的 Dart 包名称

Dart 有像 c# 这样的扩展方法吗?