【问题标题】:jQuery/JavaScript clean string so only words existjQuery/JavaScript 干净的字符串,所以只有单词存在
【发布时间】:2014-01-27 18:18:51
【问题描述】:

我有这个字符串,其中的文本与制表符、空格、CR/LF 以及可能还有更多特殊字符混合在一起。

如何清理字符串以便只剩下单词。

我尝试了显而易见的

var txtArr = dirtyString.split(" ");

这当然会产生一些结果,但还不够好,因为它使所有具有制表符或 CR/LF 或 what-have-you-that-is-not-a-letter-nor-number-but-not- 的东西empty-space-either,显示为字符串中与其相邻的单词的连接单词,从而使单词的数量少于应有的数量,并且也不正确。

所以,我有点卡住了。可能有一个正则表达式技巧可用于此类内容。我很感激一些意见。谢谢。

【问题讨论】:

  • 你想把字符串拆分成一个数组吗?
  • 嗯,这并不重要。我只想留下我知道是单词的单词。如果我将它们放在一个数组或一个由 COMMA 或 SPACE 或其他任何东西分隔的字符串中,正如我所说,这不是这里的主要问题。
  • 你想用空字符串“”替换。您可以使用一些正则表达式替换功能

标签: javascript jquery regex


【解决方案1】:

您的问题的一个简单解决方案是模式匹配。
试试:
var txtArr = dirtyString.split(/\s/g);

\s 表示仅查找空格(跳过单词)。
\S 此处未使用,但值得一提的是,它曾经仅选择没有空格的字符序列。
\w 此处未使用但值得一提的是,它曾经只选择单词。
/g 表示 Global- 不仅替换第一个结果,还替换所有结果。
阅读更多关于JavaScript 的正则表达式方法和用法here

【讨论】:

  • 这很好用,是最简单的答案(=好)。 .split(/\s/g) 可以很容易地稍后将其拆分为逗号并循环遍历并获取所有单词。好的。谢谢。
  • \W(大写)将匹配所有 NON-word 字符(特别是不属于字符类 [A-Za-z0-9_] 的内容)。 \w 小写将匹配所有单词字符。
  • 没有注意到大写。固定。
【解决方案2】:

试试这个

var dirtyString = "avcbn n@nb @#$%^&*()";
alert(dirtyString.replace(/[^a-zA-Z ]/g,""));

【讨论】:

    【解决方案3】:

    试试这个,

    var str="agsah gfdhgfh fgdhfd";
    
    alert(str.replace(/\s/g,''));
    

    \s 用于空格和制表符

    g 用于全局匹配以删除所有出现

    如果您想从基本拉丁字母表中删除任何不是单词字符的字符。那么你可以使用\W 而不是\s

    var str="agsah gfdhgfh fgdhfd";
    
    alert(str.replace(/\W/g,''));
    

    有关正则表达式的更多信息,请访问here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2015-06-22
      • 2018-11-23
      • 2015-08-25
      相关资源
      最近更新 更多