0

我遇到了一个问题,

我想分割所有出现的“。”

例如,如果我有以下句子:

“丹尼去上学了。太棒了。”

我希望我的输出是

丹尼去上学了。

这太棒了。

我可以很容易地解决它:

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

但!

如果我有例如:

  1. 丹尼去上学了。和: 2. 詹姆斯也去上学了。

我的输出将是:

1.

丹尼去上学了。和 :

2.

詹姆斯也去上学了

.

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

谢谢!

4

3 回答 3

1

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

于 2013-05-01T15:02:10.100 回答
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;
            }
        }
    }
}
于 2013-05-01T15:10:21.367 回答
0

我想我会尝试产生与您所要求的内容相匹配的答案,因为评论在您想要的更大范围内有意义。

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

我使用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. 

请注意,我也冒昧地根据“:”分隔匹配项,因为您的示例就是这样做的。

于 2013-05-01T15:28:41.900 回答