从字符串中删除回车和空格。

37
我想从字符串中删除回车和空格。
例如:
var t ="     \n \n    aaa \n bbb \n ccc \n";

I want to have as result:

t = "aaa bbb ccc"

我使用这个工具,它去除了回车但是空格还在。

t.replace(/[\n\r]/g, '');

请有人帮助我。

(这段内容已经是中文了,无需翻译)

add \s to it: /[\s\n\r]/g - vp_arth
@vp_arth 如果 \s 已经匹配了 \n\r,那么包含它们有什么意义呢? - Ulugbek Umirov
也许我错了... 我记得一些关于行尾和全局标志的内容.. 可能是关于一个点吗?抱歉) - vp_arth
4个回答

61

试一试:

 t.replace(/[\n\r]+/g, '');

然后:

 t.replace(/\s{2,10}/g, ' ');

第二个应该去掉一个以上的空格


24
或者您可以使用单个正则表达式进行操作:
t.replace(/\s+/g, ' ')

同时,由于存在前导和尾随空格,您需要调用.trim()。因此完整的代码如下:

t = t.replace(/\s+/g, ' ').trim();

我仍然调用replace (/^\s+|\s+$/g,'')来处理这个 :) 需要审核更新。 - vp_arth
@tenub,我将多个空格替换为单个空格。因此,如果有前导空格,将会有前导空格。如果有尾随空格,将会有尾随空格。我们可以使用.trim()来去除它们。编辑:糟糕,@tenub已经删除了这个问题。 - Ulugbek Umirov
这对我起作用了,而其他流行的答案没有涵盖我的情况。 - Chiramisu

4
我建议:
  • 清除回车 => 空格
  • 将多个空格替换为一个空格
  • 去除开头和结尾的空格(与jQuery trim()相同)
因此,
t.replace(/[\n\r]+/g, ' ').replace(/\s{2,}/g,' ').replace(/^\s+|\s+$/,'') 

0
太棒了!感谢分享,Ulugbek。我使用以下代码从条形码扫描器获取逗号分隔的值。每当按下条形码扫描器按钮时,换行符和空格都会转换为逗号。
JavaScript:
function KeyDownFunction() {
    var txt = document.getElementById("<%=txtBarcodeList.ClientID %>");
    txt.value = txt.value.replace(/\s+/g, ',').trim();
}

标记:

<asp:TextBox ID="txtBarcodeList" runat="server" TextMode="MultiLine" Columns="100"
                    Rows="6" onKeyDown="KeyDownFunction()"></asp:TextBox>

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