我遇到了一个问题,
我想拆分一切“。”
例如,如果我有句子:
“丹尼上学了。太好了。”
我希望我的输出将是
丹尼上学了。太棒了。
我可以很容易地解决它:
string[] list = currentResult.Split(new string[] { ". " }, StringSplitOptions.None);
BUT!
如果我有例如:
- 丹尼去了学校。并且:2。詹姆斯也去了学校。
醇>
我的输出将是:
1
丹尼去了学校。并且:2
詹姆斯也去了学校
例如,当点之前有一个数字时,我不希望它分裂它。 我能以某种方式解决它吗?
谢谢!
答案 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.
请注意,我冒昧地将基于':'的匹配分开,因为您的示例是这样做的。