我知道如何用替换单词Regex
,但是我不知道如果单词中存在整行,如何删除/替换整行。
textBox1.Text = Regex.Replace(textBox1.Text, "word", "");
假设您的意思是我理解的线条:
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”(例如)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句