在C#中有条件分割吗?

时间:2013-05-01 13:00:41

标签: c#

我遇到了一个问题,

我想拆分一切“。”

例如,如果我有句子:

  “丹尼上学了。太好了。”

我希望我的输出将是

  丹尼上学了。

     

太棒了。

我可以很容易地解决它:

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

BUT!

如果我有例如:

  
      
  1. 丹尼去了学校。并且:2。詹姆斯也去了学校。
  2.   

我的输出将是:

  

1

     丹尼去了学校。并且:

     

2

     

詹姆斯也去了学校

     

例如,当点之前有一个数字时,我不希望它分裂它。 我能以某种方式解决它吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

你总是可以逐字逐句地去做,比如:

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

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;
            }
        }
    }
}

答案 2 :(得分:0)

我以为我会尝试制作一个符合你要求的答案,而评论在你想要的更广泛的范围内是有意义的。

了解如何使用来自http://www.dotnetperls.com/regex-matches

的C#代码使用正则表达式

我使用http://regexpal.com/来确认我的正则表达式。玩那个或类似的页面来处理正则表达式。值得知道如何正则表达式。

查看http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet或其他地方以获取正则表达式的命令和定义列表。

正则表达式“。*?\ D [。||:] \ 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. 

请注意,我冒昧地将基于':'的匹配分开,因为您的示例是这样做的。