c#中有条件分割吗?

本文关键字:分割 有条件 | 更新日期: 2023-09-27 18:11:35

我遇到了一个问题,

我想把后面的东西分开。"

例如,如果我有这样的句子:

"丹尼去上学了。太棒了。"

我希望我的输出是

Danny去上学了。

真是太棒了。

,我可以很容易地解决这个问题:

string[] list = currentResult.Split(new string[] { ". " }, StringSplitOptions.None);

但是!

如果我有例如:

    Danny去上学了。和:2。詹姆斯也去上学了。

我的输出将是:

1。

Danny去上学了。和:

2。

James也去上学了

.

例如,当点前面有一个数字时,我不希望它分割它。我能想办法解决它吗?

谢谢!

c#中有条件分割吗?

这里的问题是如何处理格式奇怪的数据,如果您可以控制您的数据,您可能会考虑使用1)和2)而不是1。和2。然而,如果不是这种情况,那么你可能不得不求助于regex来辨别.是一行的一部分还是一行的结尾,因为这个功能已经超出了String.Split

的能力。

您可以一个字符一个字符地执行以下操作:

注意:未经测试,但看起来是正确的:)

List<string> strings = new List<string>();
int curStart = 0;
for(int index=0;index<str.Length;index++) {
    if(index > 0) {
        if(str[index] == '.') {
            if(!char.IsNumeric(str[index-1])) {
                strings.Add(str.SubString(curStart, index-curStart));
                curStart = index + 1;
            }
        }
    }
}

我想我应该试着给出一个与你的问题相匹配的答案,因为这些注释在你想要的更大范围内是有意义的。

了解如何使用正则表达式与c#代码:http://www.dotnetperls.com/regex-matches

我使用http://regexpal.com/来确认我的正则表达式。使用该页面或类似页面来获取regex的句柄。知道如何正则表达式是值得的。

查看http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet或其他地方的命令列表和regex的定义。

正则表达式".*?||:]'s"将翻转字符串:

1. Danny went to School. and : 2. James went to school as well. Danny went to school. it was wonderful. 

转换成以下匹配项(这里用新行分隔):

1. Danny went to School. 
and : 
2. James went to school as well. 
Danny went to school. 
it was wonderful. 

请注意,我也可以根据':'来分隔匹配,因为您的示例也是这样做的。