【问题标题】:How to concatenate two string in Dart?如何在 Dart 中连接两个字符串?
【发布时间】:2018-12-05 07:06:10
【问题描述】:

我是 Dart 编程语言的新手,任何人都可以帮助我找到 Dart 中可用的最佳字符串连接方法。

我只发现加号 (+) 运算符可以像其他编程语言一样连接字符串。

【问题讨论】:

    标签: string dart


    【解决方案1】:

    有 3 种连接字符串的方法

    String a = 'a';
    String b = 'b';
    
    var c1 = a + b; // + operator
    var c2 = '$a$b'; // string interpolation
    var c3 = 'a' 'b'; // string literals separated only by whitespace are concatenated automatically
    var c4 = 'abcdefgh abcdefgh abcdefgh abcdefgh' 
             'abcdefgh abcdefgh abcdefgh abcdefgh';
    

    通常字符串插值优于+ 运算符。

    还有StringBuffer 用于更复杂和高性能的字符串构建。

    【讨论】:

    • 实际上你不必用空格分隔相邻的字符串文字。 'hello ''world' 将打印为 hello world
    • + 运算符对于字符串连接来说是一种不好的做法,请参阅:dart.dev/guides/language/effective-dart/…
    • 如果您需要通过访问属性甚至方法进行字符串插值 - 将内容放入大括号中,如下所示(我通常将这种方法用于日志):“${assets[index].size.width.toStringAsFixed (0)}x${assets[index].size.height}" 它可能有这样的输出:1000x2000.0
    • 我知道字符串插值是首选,但是当我有两个字符串文字从 Map<dynamic, String> 查找动态是枚举时,Dart 在 VSCode 中尖叫“不必要的字符串插值”,当我切换时到+ 红色下划线消失了,它不再对我大喊大叫了。
    【解决方案2】:

    假设你有一个 Person 类。

    class Person {
       String name;
       int age;
    
       Person({String name, int age}) {
        this.name = name;
        this.age = age;
      }
    }
    

    你想打印人物的描述。

    var person = Person(name: 'Yogendra', age: 29);
    

    在这里你可以像这样连接字符串

     var personInfoString = '${person.name} is ${person.age} years old.';
     print(personInfoString);
    

    【讨论】:

      【解决方案3】:

      如果你需要循环连接,我有这个:

      var list = ['satu','dua','tiga'];
      var kontan = StringBuffer();
      list.forEach((item){
          kontan.writeln(item);
      });
      konten = kontan.toString();
      

      【讨论】:

      【解决方案4】:

      最简单的方法

      String get fullname {
         var list = [firstName, lastName];
         list.removeWhere((v) => v == null);
         return list.join(" ");
      }
      

      【讨论】:

        【解决方案5】:

        answer by Günter 涵盖了在 Dart 中如何连接两个字符串的大多数情况。

        如果你有一个 Iterable 字符串,那么使用 writeAll 会更容易,因为这让你可以选择指定一个可选的分隔符

        final list = <String>['first','second','third'];
        final sb = StringBuffer();
        sb.writeAll(list, ', ');
        print(sb.toString());
        

        这将返回

        '第一,第二,第三'

        【讨论】:

          【解决方案6】:

          假设我们有两个字符串

          字符串 a = '你好';
          字符串 b = '世界';
          字符串输出;

          现在我们要连接这两个字符串

          输出 = a + b;
          打印(输出);

          Hello World
          

          【讨论】:

            猜你喜欢
            • 2011-11-04
            • 2022-11-16
            • 2012-01-17
            • 2011-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多