我有这个字符串,文字与标签,空格,CR / LF以及可能更特殊的字符混合在一起。
我怎样才能清理字符串,以便我只剩下单词。
我试过了明显的
var txtArr = dirtyString.split(" ");
这当然会产生一些结果,但还不够好,因为它会使所有带有标签或CR / LF的东西或者你有什么不是一个字母也不是数字但不是 - empty-space-both,显示为字符串中紧邻它的单词的连接词,从而使单词数量少于预期,并且也不正确。
所以,我有点卡住了。对于像这样的东西,可能有一个正则表达式技巧。我很欣赏一些意见。感谢。
答案 0 :(得分:2)
解决问题的一个简单方法是使用Pattren匹配
尝试:
var txtArr = dirtyString.split(/\s/g);
\s
表示仅查找空格(滑动单词)
这里没有使用\S
,但很好地提到它只用于选择没有空格的char序列
\w
这里没有使用,但很高兴提到它过去只选择单词
/g
表示Global - 替换所有结果,而不仅仅是第一个结果
详细了解JavaScript
的正则表达式方法和用法here。
答案 1 :(得分:2)
试试这个
var dirtyString = "avcbn n@nb @#$%^&*()";
alert(dirtyString.replace(/[^a-zA-Z ]/g,""));
答案 2 :(得分:1)
试试这个,
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