使用javascript解析字符串

时间:2011-10-30 16:41:43

标签: javascript

您好我想使用JavaScript搜索文本中的某些字符(或单词)并删除开始此字符/单词的行。

例如

删除以(He)开头的行..

输入

Hello world, 
He like cats and dogs
Bye bye

输出

Hello world, 
Bye bye

3 个答案:

答案 0 :(得分:2)

您可以将字符串拆分为单独的行,丢弃所需的行,最后将这些行重新连接成一个字符串:

var string = "test\nHe test\ntest"; // "\n" represents a newline

var result = string.split("\n") // split into lines
                   .filter(function(line) {              // only retain lines
                       return line.indexOf("He ") !== 0; // that don't start
                   })                                    // with "He " *
                   .join("\n"); // join the lines back into one string

*)“不启动”表示:字符在行中的索引0处没有上诉。

答案 1 :(得分:2)

您可以使用indexOf方法找到“He”的pos,然后使用substring方法获取下一个换行符的位置以删除该行。

var someString = "Hello world,\n" +
    "He like cats and dogs\n" +
    "Bye bye";

var pos = someString.indexOf('He ');
var nextLineBreak = someString.indexOf('\n', pos);

var firstPart = someString.substring(0, pos);
var secondPart = someString.substring(nextLineBreak +1);

var finalString = firstPart + secondPart;
alert(finalString);

jsFiddle这里:http://jsfiddle.net/zw2Gh/

答案 2 :(得分:2)

这是基于单行正则表达式的替换:

someString.replace(/^He .*(\n|$)/mg, '');

它启用多行和全局标志(mg),允许我们在换行之前和之后使用^和$进行匹配。它还将删除所有出现的模式。如果您希望替换仅"He\n"的行,则需要' .*'可选,如下所示:

someString.replace(/^He( .*)?(\n|$)/mg, '');