String 如何删除Dart中字符串的所有空白?

String 如何删除Dart中字符串的所有空白?,string,flutter,dart,whitespace,String,Flutter,Dart,Whitespace,使用trim()。 我做错了什么,或者有其他选择吗 String product = "COCA COLA"; print('Product id is: ${product.trim()}'); 控制台打印:产品id为:COCA-COLA修剪方法只需删除前导和尾随。使用Regexp灌输: 以下是一个例子: 试试这个 String product = "COCA COLA"; print('Product id is: ${product.re

使用
trim()。
我做错了什么,或者有其他选择吗

       String product = "COCA COLA";

       print('Product id is: ${product.trim()}');

控制台打印:
产品id为:COCA-COLA

修剪方法只需删除前导和尾随。使用Regexp灌输: 以下是一个例子: 试试这个

String product = "COCA COLA";
print('Product id is: ${product.replaceAll(new RegExp(r"\s+\b|\b\s"), "")}');
更新:

String name = '4 ever 1 k g @@ @';
print(name.replaceAll(new RegExp(r"\s+"), ""));

使用微调功能

String name = "Stack Overflow";
print(name.trim());

这会解决你的问题

String name = "COCA COLA";
print(name.replaceAll(' ', ''));

如果这对将来的某个人有任何帮助,为了方便起见,您可以为String类定义一个扩展方法:

extension ExtendedString on String {
  /// The string without any whitespace.
  String removeAllWhitespace() {
    // Remove all white space.
    return this.replaceAll(RegExp(r"\s+"), "");
  }
}
扩展字符串字符串上的扩展{
String removeWhitespace(){
返回此。replaceAll(“”,”);
}
}
这可以像
product.removeWhiteSpace()一样调用。
我过去使用它来创建一个助手方法,在按字符串排序列表时忽略大小写和空格

扩展字符串字符串上的扩展{
字符串toSortable(){
返回此.toLowerCase().replaceAll(“”,”);
}
}
您可以尝试以下方法:

String product = "COCA COLA";

print(product.split(" ").join(""));   // COCACOLA
  • 使用正则表达式(
    RegExp

    如果原始字符串包含多个空格,并且要删除所有空格。应用下面的解决方案

    String replaceWhitespacesUsingRegex(String s, String replace) {
     if (s == null) {
       return null;
     }
    
     // This pattern means "at least one space, or more"
     // \\s : space
     // +   : one or more
     final pattern = RegExp('\\s+');
     return s.replaceAll(pattern, replace);
    }
    
    像这样打电话

    print(replaceWhitespacesUsingRegex('One  Two   Three   Four', '')); // Output: 'OneTwoThreeFour'
    
  • 使用
    trim()

    trim()
    方法用于删除前导空格和尾随空格。它不会改变原始字符串。如果字符串末尾的开头没有空格,它将返回原始值

    print('   COCA COLA'.trim()); // Output: 'COCA COLA'
    print('COCA COLA     '.trim()); // Output: 'COCA COLA'
    print('   COCA COLA     '.trim()); // Output: 'COCA COLA'
    
  • 使用
    trimleeft()
    trimlright()

    如果您只想在开始时修剪,而不想在结束时修剪,或者相反的方式,该怎么办。您可以使用
    trimleeft
    仅删除前导空格,也可以使用
    trimlright
    仅删除尾随空格

    print('   COCA COLA    '.trimLeft()); // Output: 'COCA COLA     '
    print('   COCA COLA    '.trimRight()); // Output:'   COCA COLA'
    

    如果字符串可以是<代码> null <代码>,可以考虑使用NULL感知运算符。

    String s = null;
    print(s?.trim());
    
    上述代码将返回
    null
    ,而不是抛出
    NoSuchMethodError


  • 作者:

    我知道这个问题有很好的答案,但我想展示一种奇特的方法来删除字符串中的所有空白。实际上,我认为Dart应该有一个内置的方法来处理这个问题,所以我为String类创建了以下扩展:

    extension ExtendedString on String {
      /// The string without any whitespace.
      String removeAllWhitespace() {
        // Remove all white space.
        return this.replaceAll(RegExp(r"\s+"), "");
      }
    }
    
    现在,您可以用一种非常简单整洁的方式使用它:

    String product = "COCA COLA";
    print('Product id is: ${product.removeAllWhitespace()}');
    

    在我看来是正确的。您希望它打印什么?“COCA-COLA”是“COCA-COLA”,不是吗?结果应该是COCA-COLA,不带空格strim()删除字符串开头和结尾的空格。它不会影响其中的空格。Look string.replaceAll。别担心,这是一个很好的解决方案。这不起作用。。试试这个
    String name='4 ever 1 k g@@@;打印(name.replaceAll(新的RegExp(r“\s+\b |\b\s”),”)@Fobos空白未删除,请共享其他RegExp@FurkanVijapura试试这个:字符串名='4 ever 1 k g@@@;打印(name.replaceAll(新的RegExp(r“\s+”)”)”);所以应该和更新一起去吗?有什么区别吗?trim只是删除了stringbad答案开头和结尾的空格。我对此投了反对票,因为问题是删除所有空白,包括中间的空白。trim()只删除前导空格和尾随空格。如何删除同一字符串中的不同出现?就像我的字符串是“hello%25sachin%20here”,我想删除“%25”和“%20”这两个…这一个很整洁,谢谢你知道“+$”是什么意思吗?