C# 使用两个条件拆分字符串
我有一个字符串,如下所示 字符串sample=“class0.calss1.class2.class3.class4.class5.class6.class7” 我需要从这个示例字符串创建一个单词列表 单词是以句点开头,以以下字符结尾的字符串:C# 使用两个条件拆分字符串,c#,linq,C#,Linq,我有一个字符串,如下所示 字符串sample=“class0.calss1.class2.class3.class4.class5.class6.class7” 我需要从这个示例字符串创建一个单词列表 单词是以句点开头,以以下字符结尾的字符串: 空间或空间 另一个时期或 结束 注意:这里的关键点是-拆分基于两个标准-一个期间和一个空格 我有以下节目。它很好用。但是,是否有一种使用LINQ或正则表达式的更简单/更高效/简洁的方法 代码 参考: 您可以使用正则表达式来实现这一点 代码 Reg
LINQ
或正则表达式的更简单/更高效/简洁的方法
代码
参考:
您可以使用正则表达式来实现这一点
代码
Regex regex = new Regex(@"\.[^ .]+");
var matches = regex.Matches(sample);
string[] result = matches.Cast<Match>().Select(x => x.Value).ToArray();
正则表达式的解释
\. Match a dot
[^. ]+ Negative character class - anything apart from space or dot (at least one)
\.匹配一个点
[^.]+负字符类-除空格或点以外的任何字符(至少一个)
相关的
您是否需要保留该文件。空间呢
如果没有,您可以使用:
sample.split(new char[]{" ", "."}).ToList();
这将为您提供一个字符串列表
string sample = " class0 .calss1 .class2 .class3.class4 .class5 class6 .class7";
sample = Regex.Replace(sample, " ", String.Empty);
string[] arr = sample.Split(new char[] { '.' });
编辑列表部分:
List<string> words = sample.Split(new char[] {'.'}).Skip(1).Select(x=>
"." + x.Split(new char[] {' '})[0].Trim()).ToList();
List words=sample.Split(新字符[]{.'})。跳过(1)。选择(x=>
“+x.Split(新字符[]{'})[0].Trim()).ToList();
Check out@VladL拆分基于两个标准-句点和空格。如何使用String.Split完成此操作?@MarkByers我已使用预期结果的屏幕截图更新了此问题。+1我通常不赞成使用正则表达式来拆分字符串,但在这种情况下,这是最好的方法。谢谢。你能解释一下“尽可能少”是什么意思吗@Lijo:正则表达式默认是贪婪的。?
修饰符生成*
。也感谢您的参考。如果你能用这些细节更新答案,那就太好了link@Lijo:仔细考虑一下,并更新为一个更简单的正则表达式。结果中没有出现class0吗?
sample.split(new char[]{" ", "."}).ToList();
string sample = " class0 .calss1 .class2 .class3.class4 .class5 class6 .class7";
sample = Regex.Replace(sample, " ", String.Empty);
string[] arr = sample.Split(new char[] { '.' });
string sample = " class0 .calss1 .class2 .class3.class4 .class5 class6 .class7";
string[] words = sample.Split(new char[] {'.'}).Skip(1).Select(x=>
"." + x.Split(new char[] {' '})[0].Trim()).ToArray();
List<string> words = sample.Split(new char[] {'.'}).Skip(1).Select(x=>
"." + x.Split(new char[] {' '})[0].Trim()).ToList();