【问题标题】:Creating a capitalize Method in Dart在 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 还没有(目前)。

标签: dart capitalize


【解决方案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'));
      

      【讨论】:

        猜你喜欢
        • 2019-07-19
        • 2019-11-22
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-22
        相关资源
        最近更新 更多