如果有一个单词,如何删除整行?

时间:2015-05-17 20:02:09

标签: c#

我知道如何用Regex替换单词,但如果单词中存在单词,我不知道如何删除/替换整行。

textBox1.Text = Regex.Replace(textBox1.Text, "word", "");

2 个答案:

答案 0 :(得分:6)

假设你的意思是我理解的那些:

var text =  String.Join(Environment.NewLine, new[]{
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed congue tortor, ",
        "ut sollicitudin lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ",
        "ultrices posuere cubilia Curae; Nam ultricies dolor vel massa scelerisque, et interdum ",
        "orci finibus. Duis felis nibh, pretium quis placerat at, fringilla eu justo. ",
        "Pellentesque id nunc ullamcorper, condimentum lacus a, mollis neque. Etiam sapien ",
        "massa, malesuada in dui in, rutrum aliquet nisl. Sed a egestas odio, in faucibus ",
        "magna. Morbi sit amet tincidunt diam. Morbi tristique magna diam, nec consectetur ",
        "mauris vehicula volutpat. Praesent egestas cursus arcu, vel luctus purus interdum eget. ",
        "Pellentesque nec bibendum orci. Proin eget odio mattis, euismod nulla ac, fermentum ",
        "ipsum. Aliquam a velit nulla. Suspendisse eget posuere nunc, at imperdiet ligula. ",
        "Pellentesque vel risus eu augue sagittis faucibus. Sed leo tellus, auctor id eros ut, ",
        "posuere consequat ligula. "
    });
    var word = "nisl";
    var result = Regex.Replace(text, String.Format(@"(^.*?\b{0}\b.*?$)", Regex.Escape(word)), "", RegexOptions.Multiline | RegexOptions.IgnoreCase);

在上述情况下,以“massa,malesuada ......”开头的行已被删除,因为它包含“nisl”。

强制性LINQ方法(重用上面的text变量):

var regex = new Regex(String.Format(@"\b{0}\b", Regex.Escape(word)), RegexOptions.IgnoreCase);
var result = String.Join(Environment.NewLine, text.Split(new String[]{ Environment.NewLine }, StringSplitOptions.None)
    /* remove line */ .Where(line => !regex.IsMatch(line))
    /* replace line */ //.Select(line => !regex.IsMatch(line) ? line : "" /* replacement*/)
    .AsEnumerable()
).Dump("LINQ");

你没有 使用正则表达式,但正则表达式确实有\b这使得查找单词变得容易。 IndexOf也会起作用,但您可能不得不担心在“stackoverflow”中找到“over”(例如)。

答案 1 :(得分:0)

如果文本框中包含您的单词,请用空字符串替换整行文本:

textBox1.Text = textBox1.Text.IndexOf("word") < 0 ? textBox1.Text : "";