如何在Dart中删除字符串的所有空格?

52

在Dart中使用trim()来消除空格,但它不起作用。我做错了什么,还是有其他方法?

       String product = "COCA COLA";

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

控制台输出:产品ID是:COCA COLA


7
我认为这看起来是正确的。你期望它打印什么? - Lee Daniel Crocker
3
"COCA COLA" 剪短后还是 "COCA COLA",对吧? - Cetin Basoz
COCACOLA - braulio.cassule
11
trim() 函数会移除字符串开头和结尾的空格,但不会影响字符串内部的空格。请注意,翻译保持了原文中的技术术语。 - Cetin Basoz
3
看一下 string.replaceAll。 - Cetin Basoz
那么我应该使用什么替代方案呢? - braulio.cassule
9个回答

86

这将解决你的问题。

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

如何在同一字符串中删除不同的出现?比如我的字符串是“hello%25sachin%20here”,我想同时删除'%25'和'%20'...... - Sachin

65

试试这个

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(RegExp(r"\s+"), ""));

另一个简单的解决方案:

String name = '4 ever 1 k g @@ @';
print(name.replaceAll(' ', '');

1
不用担心,这是一种乐趣。 - Fobos
这不是工作... 试试这个 String name = '4 ever 1 k g @@ @'; print(name.replaceAll(new RegExp(r"\s+\b|\b\s"), "")); - BIS Tech
@Fobos 空格未被移除,请分享其他正则表达式。 - Furkan
@FurkanVijapura 试试这个:String name = '4 ever 1 k g @@ @'; print(name.replaceAll(new RegExp(r"\s+"), "")); - Fobos
那么..应该选择更新的版本吗?有什么区别? - Ryde

11

9

我知道这个问题已经有了很好的答案,但我想展示一种花哨的方法来删除字符串中的所有空格。实际上,我认为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()}');

6

var s = "可口可乐"; s.replaceAll(' ','');


首先,运行后s保持不变。其次,即使这样做起作用了,它真的比顶部答案多添加了什么吗? - General Grievance

5
你可以尝试这个:
String product = "COCA COLA";

print(product.split(" ").join(""));   // COCACOLA

3

有很多方法可以做到这一点。

最明显的方法:

String product = "COCA COLA";
print('Product id is: ${product.replaceAll(' ', '')}');  // COCACOLA

使用普通函数:

String removeAllWhitespaces(String string) {
  return string.replaceAll(' ', '');
}

String product = "COCA COLA";
print('Product id is: ${removeAllWhitespaces(product)}');  // COCACOLA

使用扩展方法:

extension StringRemoveWhitespace on String { 
String get removeAllWhitespaces => replaceAll(' ', '');  // COCACOLA
}

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

3
如果这对未来的某个人有所帮助的话,为了方便起见,您可以定义一个扩展方法到String类:
extension StringExtensions on String {
  String removeWhitespace() {
    return this.replaceAll(' ', '');
  }
}

这可以像这样调用:product.removeWhiteSpace()。我曾经在排序列表时使用它来创建一个帮助方法,同时忽略大小写和空格。

extension StringExtensions on String {
  String toSortable() {
    return this.toLowerCase().replaceAll(' ', '');
  }
}

-3

使用 Trim 函数

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

13
trim 只会删除字符串开头和结尾的空格。 - temirbek
6
差评。我给它点踩是因为这个问题是关于删除所有的空格,包括中间的空格。而trim()只能删除开头和结尾的空格。 - Rami Ibrahim
Trim函数可以去除字符串开头和结尾的空格,但不会去除字符串中间的空格。 - George

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接