从c#中的字符串中拆分数字

时间:2013-12-12 16:09:40

标签: c# regex

我在c#中有一个字符串,如下所示:

{ name: "Phai dấu cuộc tình", mp3: "audio\\16\\Phai dau cuoc tinh.mp3"},{ name: "Caravan of life", mp3: "audio\\4\\Caravan of life.mp3"},{ name: "I'm Forbidden", mp3: "audio\\11\\I'm Forbidden.mp3"},{ name: "Cause i love you", mp3: "audio\\6\\Cause i love you.mp3"},{ name: "Chỉ là giấc mơ", mp3: "audio\\8\\Chi la giac mo.mp3"},{ name: "Lột xác", mp3: "audio\\12\\Lot xac.mp3"}

我想将“\\”之间的数字换成新字符串。 例如,结果将是:16; 4; 11; 6; 8; 12。 任何帮助都会很棒。

2 个答案:

答案 0 :(得分:6)

使用正面的外观断言:

string str = "{ name: \"Phai dấu cuộc tình\", mp3: \"audio\\16\\Phai dau cuoc tinh.mp3\"},{ name: \"Caravan of life\", mp3: \"audio\\4\\Caravan of life.mp3\"},{ name: \"I'm Forbidden\", mp3: \"audio\\11\\I'm Forbidden.mp3\"},{ name: \"Cause i love you\", mp3: \"audio\\6\\Cause i love you.mp3\"},{ name: \"Chỉ là giấc mơ\", mp3: \"audio\\8\\Chi la giac mo.mp3\"},{ name: \"Lột xác\", mp3: \"audio\\12\\Lot xac.mp3\"}";

foreach (var match in Regex.Matches(str, @"(?<=\\)\d+(?=\\)"))
    Console.WriteLine(match);

替代方案:捕获组

foreach (Match match in Regex.Matches(str, @"\\(\d+)\\"))
    Console.WriteLine(match.Groups[1]);

ideone

答案 1 :(得分:0)

foreach (Match match in Regex.Matches(str, "\\\\([0-9]+)\\\\"))
{
    // get the match with match.Groups[0].ToString().Replace(@"\", ""))
}

这样的事情会起作用。您可以更改正则表达式来完成所有操作,但现在我的生锈了!

虽然看着我会说使用JSON反序列化来解析它更容易。