Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用两个条件拆分字符串_C#_Linq - Fatal编程技术网

C# 使用两个条件拆分字符串

C# 使用两个条件拆分字符串,c#,linq,C#,Linq,我有一个字符串,如下所示 字符串sample=“class0.calss1.class2.class3.class4.class5.class6.class7” 我需要从这个示例字符串创建一个单词列表 单词是以句点开头,以以下字符结尾的字符串: 空间或空间 另一个时期或 结束 注意:这里的关键点是-拆分基于两个标准-一个期间和一个空格 我有以下节目。它很好用。但是,是否有一种使用LINQ或正则表达式的更简单/更高效/简洁的方法 代码 参考: 您可以使用正则表达式来实现这一点 代码 Reg

我有一个字符串,如下所示

字符串sample=“class0.calss1.class2.class3.class4.class5.class6.class7”

我需要从这个示例字符串创建一个单词列表

单词是以句点开头,以以下字符结尾的字符串:

  • 空间或空间
  • 另一个时期或
  • 结束
  • 注意:这里的关键点是-拆分基于两个标准-一个期间和一个空格

    我有以下节目。它很好用。但是,是否有一种使用
    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();