c#中有条件分割吗?
本文关键字:分割 有条件 | 更新日期: 2023-09-27 18:11:35
我遇到了一个问题,
我想把后面的东西分开。"
例如,如果我有这样的句子:
"丹尼去上学了。太棒了。"
我希望我的输出是
Danny去上学了。
真是太棒了。
,我可以很容易地解决这个问题:
string[] list = currentResult.Split(new string[] { ". " }, StringSplitOptions.None);
但是!
如果我有例如:
Danny去上学了。和:2。詹姆斯也去上学了。
我的输出将是:
例如,当点前面有一个数字时,我不希望它分割它。我能想办法解决它吗?1。
Danny去上学了。和:
2。
James也去上学了
.
谢谢!
这里的问题是如何处理格式奇怪的数据,如果您可以控制您的数据,您可能会考虑使用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.
请注意,我也可以根据':'来分隔匹配,因为您的示例也是这样做的。