我在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。 任何帮助都会很棒。
答案 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]);
答案 1 :(得分:0)
foreach (Match match in Regex.Matches(str, "\\\\([0-9]+)\\\\"))
{
// get the match with match.Groups[0].ToString().Replace(@"\", ""))
}
这样的事情会起作用。您可以更改正则表达式来完成所有操作,但现在我的生锈了!
虽然看着我会说使用JSON反序列化来解析它更容易。