-2

.如果出现在行首,我想删除一个点( ),例如:

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

我怎样才能删除这条线?

4

6 回答 6

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);
于 2012-07-23T08:38:21.467 回答
0
string result = "hi,\n.\nHow are you.".Replace("\n.\n", "\n");
于 2012-07-23T08:34:25.050 回答
0

您可以使用内置的字符串比较- 有很多可用的。

您可以使用RegEx

但这一切都归结为一点->您尝试过什么?请阅读文档

简短的可能答案:

// 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);
    }
} 
于 2012-07-23T08:34:54.443 回答
0

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

bool weHaveDot = myString[0] == "." || (myString.IndexOf("\n.") > -1);
于 2012-07-23T08:35:12.633 回答
0

关于什么:

MyLine.Substring(MyLine.IndexOf("<new line> ") + 11).StartsWith(".")
于 2012-07-23T08:37:30.233 回答
0

恐怕答案取决于问题的含义。

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

那么解决方案是:

  • 将字符串拆分成一个字符串数组,每个数组包含一行
  • 删除所有仅由一个点组成的数组元素
  • 将字符串数组重新连接在一起。

而且您不需要正则表达式。(除非您想获得一些正则表达式的经验;在这种情况下,对不起。)

于 2012-07-23T08:41:46.393 回答