0

例如字符串:

  string test= "[1,2,3,4,'Name\'s(w)','ProductName','2013,6,1,10,00,00','2013,6,1,10,00,00',0]";

谁能帮我解决这个问题?所以我的数组应该是

["1","2","3","4","Name\'s(w)","ProductName","2013,6,1,10,00,00","2013,6,1,10,00,00","0"]

如何将字符串拆分为数组,字符串格式如上,值是动态的。我想要字符串“2013,6,1,10,00,00”。

4

2 回答 2

5

输入字符串在 JSON 语法中看起来像数组,所以使用内置的 JSON 解析器就足够了:

using System;
using System.Web.Script.Serialization;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            const string input = @"[1,2,3,4,'Name\'s(w)','ProductName','2013,6,1,10,00,00','2013,6,1,10,00,00',0]";
            var parsed = new JavaScriptSerializer().Deserialize<object[]>(input);
            foreach (var o in parsed)
            {
                Console.WriteLine(o.ToString());
            }
            Console.ReadLine();
        }
    }
}

输出是:

1
2
3
4
Name's(w)
ProductName
2013,6,1,10,00,00
2013,6,1,10,00,00
0

请记住,您需要在项目中添加对 System.Web.Extensions 的引用。

于 2013-07-02T08:25:38.813 回答
0

您可以使用正则表达式匹配产品名称后的 '2013,6,1,10,00,00'

这将完成这项工作:

ProductName','([\a-zA-Z0-9-,]+)

您可以使用http://www.regextester.com/来测试正则表达式。

要在 c# 中使用它,您可以:

private static readonly Regex FOO_REGEX = new Regex("ProductName','([\a-zA-Z0-9-,]+)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

Match match = FOO_REGEX.Match(inputParameters);

if (match.Success)
{
    GroupCollection groups = match.Groups;
    //groups[1].Value is equals to 2013,6,1,10,00,00
}

问候,

于 2013-07-02T08:09:49.320 回答