如何使用C#和正则表达式解析字符串?

时间:2009-06-28 12:13:07

标签: c# regex string parsing

如何转换字符串:

"Microsoft Windows XP Professional x64 Edition|C:\\WINDOWS|\\Device\\Harddisk4\\Partition1"

"Microsoft Windows XP Professional x64 Edition"

...使用正则表达式?

我想删除|符号之后的所有符号。通过Regex.Replace轻松实现它吗?我在哪里可以找到Regex.Replace模式的语法描述?

7 个答案:

答案 0 :(得分:13)

你不需要正则表达式。您可以使用子字符串:

var text = @"Microsoft Windows XP Professional x64 Edition|C:\WINDOWS|\Device\Harddisk4\Partition1";
text = text.Substring(0,text.IndexOf("|"));

答案 1 :(得分:9)

string str = @"Microsoft Windows XP Professional x64 Edition|C:\WINDOWS|\Device\Harddisk4\Partition1";
string str2 = str.Split('|')[0];

str2 =“Microsoft Windows XP Professional x64 Edition”

答案 2 :(得分:3)

如果您决定使用正则表达式:

Regex p = new Regex(@"([^|]*)|");
string s = @"Microsoft Windows XP Professional x64 Edition|C:\\WINDOWS|\\Device\\Harddisk4\\Partition1";
s = p.Match(s).Value;

答案 3 :(得分:1)

使用String.Split(),它产生一个String [],然后拾取元素零。

答案 4 :(得分:1)

string GetOSType(string data)
{
      return data.Split(Convert.ToChar("|"))[0];
}

这假设字符串总是要拆分。可能确定你想要围绕这个函数包装一个try-catch块。

答案 5 :(得分:0)

如果您还想了解更多有关正则表达式的信息,可以使用Cheat Sheet和简单的在线regex builder tool来帮助您入门。

答案 6 :(得分:0)

一个简单的解决方案可能是使用:

    string szOrig = "Microsoft Windows XP Professional x64 Edition|C:\\WINDOWS|\\Device\\Harddisk4\\Partition1";
    string[] separator = new string[] { "|" };
    string[] szTemp = szOrig.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    string szRequired = szTemp[0];

可能不是最好的方式,但有效。