Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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“编程如何标记间距和”&引用;通过正则表达式?_C#_Regex_Tokenize - Fatal编程技术网

C# C“编程如何标记间距和”&引用;通过正则表达式?

C# C“编程如何标记间距和”&引用;通过正则表达式?,c#,regex,tokenize,C#,Regex,Tokenize,我有一个C#程序,它接收一个日志字符串,并尝试将其标记为各种数组 示例中使用的字符串是“Tue Oct 26 2010 23:48:54664,macb,d/DRWXRWX,0,0,33-144-1,C:/WINDOWS/system32/ras”,我需要将间距(“”)和“,”分隔为数组。运行我的程序的结果如下: Tue Oct 26 2010 23:48:54 664 macb d/drwxrwxrwx 0 0 33-144-1 C:/WINDOWS/system32/ras 过滤“,”时,

我有一个C#程序,它接收一个日志字符串,并尝试将其标记为各种数组

示例中使用的字符串是“Tue Oct 26 2010 23:48:54664,macb,d/DRWXRWX,0,0,33-144-1,C:/WINDOWS/system32/ras”,我需要将间距(“”)和“,”分隔为数组。运行我的程序的结果如下:

Tue Oct 26 2010 23:48:54
664
macb
d/drwxrwxrwx
0
0
33-144-1
C:/WINDOWS/system32/ras
过滤“,”时,此结果仅部分正确,但间距(“”)不正确。因此,我需要时间23:48:54也被过滤掉。有人能告诉我密码吗?谢谢

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;


namespace Testing
{
class Program
{
    static void Main(string[] args)
    {

        //System.Collections.Generic.IEnumerable<String> lines = File.ReadLines
          ("C:\\Test\\ntfs2.txt");

        String value = "Tue Oct 26 2010 23:48:54,664,macb,d/drwxrwxrwx,0,0,33-144-
        1,C:/WINDOWS/system32/ras";
        //
        // Split the string on line breaks.
        // ... The return value from Split is a string[] array.
        //

        String rex = @"(\t)|,";

        String[] lines = Regex.Split(value, rex);

        foreach (String line in lines)
        {
            Console.WriteLine(line);
        }
    }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统诊断;
使用System.IO;
使用System.Text.RegularExpressions;
命名空间测试
{
班级计划
{
静态void Main(字符串[]参数)
{
//System.Collections.Generic.IEnumerable行=File.ReadLines
(“C:\\Test\\ntfs2.txt”);
String value=“2010年10月26日星期二23:48:54664,macb,d/DRWXRWX,0,0,33-144-
1,C:/WINDOWS/system32/ras”;
//
//在换行符上拆分字符串。
//…拆分的返回值是字符串[]数组。
//
字符串rex=@“(\t)|,”;
String[]line=Regex.Split(值,rex);
foreach(行中的字符串行)
{
控制台写入线(行);
}
}
}
}
您可以使用

value.Split(new Char[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries) 
而不是 正则表达式

您可以使用

value.Split(new Char[]{',', ' '}, StringSplitOptions.RemoveEmptyEntries) 
而不是
正则表达式

正如Jens所指出的,您可以不使用String.Split方法。但是,正则表达式如下所示:

String rex = @"[\s,]";

正如Jens所指出的,只需使用String.Split方法就可以了。但是,正则表达式如下所示:

String rex = @"[\s,]";

重复部分正确答案,因为我认为正则表达式更容易进行扩展。重复部分正确答案,因为我认为正则表达式更容易进行扩展。@JavaNoob:
\s
表示空白
\S
是非空白。
\S
[\t\r\n]
的缩写,它是所有空白字符(制表符、空格等)的集合@javanob:
\S
表示空白
\S
是非空白。
\S
[\t\r\n]
的缩写,它是所有空白字符(制表符、空格等)的集合