如何在C#中的一行开头检测点(。)?

时间:2012-07-23 08:29:41

标签: c# regex

我想删除一个点(.),如果出现在该行的开头,例如:

hi,
<new line> .
<new line> How are you.

如何删除此行?

6 个答案:

答案 0 :(得分:3)

删除一行开头的点:

resultString = Regex.Replace(subjectString, @"^\.", "", RegexOptions.Multiline);

如果以点开头,则删除整行:

resultString = Regex.Replace(subjectString, @"^\..*\r\n", "", RegexOptions.Multiline);

如果只包含一个点,则删除整行:

resultString = Regex.Replace(subjectString, @"^\.\r\n", "", RegexOptions.Multiline);

如果它以点开头并且可能包含尾随空格,则删除整行:

resultString = Regex.Replace(subjectString, @"^\.[^\r\n\S]*\r\n", "", RegexOptions.Multiline);

答案 1 :(得分:0)

string result = "hi,\n.\nHow are you.".Replace("\n.\n", "\n");

答案 2 :(得分:0)

你可以使用内置的string-comparisons - 有很多可用的。

您可以使用RegEx

但这一切都归结为一点 - &gt;你试过什么?和please read the docs

简短的答案:

// allLines is your List/Array/Enumerable of all lines that need checking
foreach(string line in allLines){
    if(!line.Trim().StartsWith("."){
        // Do whatever you like with the found string.
        line = line.Remove(".",1);
    }
} 

答案 3 :(得分:0)

“检测”在您的情况下意味着什么?如果只是在出现点时返回true / false,则可以只搜索"\n." - 换行后跟一个点。你甚至不需要正则表达式:

bool weHaveDot = myString[0] == "." || (myString.IndexOf("\n.") > -1);

答案 4 :(得分:0)

怎么样:

MyLine.Substring(MyLine.IndexOf("<new line> ") + 11).StartsWith(".")

答案 5 :(得分:0)

我担心答案取决于问题的含义。

我的猜测是你有几行,你想删除那些只包含一个点的行。正确?

然后解决方案是:

  • 将字符串拆分为字符串数组,每个字符串包含一行
  • 删除所有仅包含点
  • 的数组元素
  • 将字符串数组重新加入。

你不需要正则表达式。 (除非你想获得一些正则表达式的经验;在那种情况下,抱歉。)