C# C“编程如何标记间距和”&引用;通过正则表达式?
我有一个C#程序,它接收一个日志字符串,并尝试将其标记为各种数组 示例中使用的字符串是“Tue Oct 26 2010 23:48:54664,macb,d/DRWXRWX,0,0,33-144-1,C:/WINDOWS/system32/ras”,我需要将间距(“”)和“,”分隔为数组。运行我的程序的结果如下: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 过滤“,”时,
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]
的缩写,它是所有空白字符(制表符、空格等)的集合