如何将包含数组的字符串转换为列表<ushort>?

时间:2016-03-18 18:16:33

标签: c#

例如,有一个 string str =&#34; [2,3,4,5]&#34; 如何将这个类型字符串数组转换为一个列表,我可以在列表中获取ushort类型的每个元素? 字符串得到值&#34; [2,3,4,5]&#34;来自ruby脚本。

6 个答案:

答案 0 :(得分:1)

使用linq你可以像

那样做
var numbers = str.Where(y=>Char.IsDigit(y)).Select(p=>UInt16.Parse(p.ToString())).ToArray();

答案 1 :(得分:1)

实际上非常简单。您需要做的就是编写一个解析字符串并将其拆分的方法。以下是 NO 错误检查或优化的基本示例。命名约定纯粹是出于理解目的。

List <ushort> ConvertToUShortList (string arrayText)
{
    var result = new List<ushort> ();
    var bracketsRemoved = arrayText.Replace ("[", "").Replace ("]", "");
    var numbersSplit = bracketsRemoved.Split ( new string[] {","}, System.StringSplitOptions.None);

    foreach (var number in numbersSplit)
    {
        result.Add (ushort.Parse (number));
    }

    return result;
}

由于我给出的名字,我不需要在这个方法中解释任何东西。如果你什么都不懂,请告诉我,我会为你澄清一下。

答案 2 :(得分:1)

另一种方法(更多检查):

class Program
{
    static void Main(string[] args)
    {
        var str = "[1,2,3,4,5,6,7,8,9]";

        var x = FromRubyArray(str);

        Console.WriteLine(str);
        Console.WriteLine(string.Join("-", x));
        Console.ReadLine();
    }

    public static List<ushort> FromRubyArray(string stra)
    {
        if (string.IsNullOrWhiteSpace(stra)) return new List<ushort>();
        stra = stra.Trim();
        stra = stra.Trim('[', ']');

        return stra                
            .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
            .Select(s => Convert.ToUInt16(s))
            .ToList();
    }
}

答案 3 :(得分:1)

因为这个字符串使用的是&#34;类似Json的&#34;格式,您可以使用此代码:

JavaScriptSerializer serializer = new JavaScriptSerializer();
var array = serializer.Deserialize<ushort[]>("[2,3,4,5]");

您只需要引用System.Web.Extensions程序集

答案 4 :(得分:1)

使用Newtonsoft的Json.net(http://www.newtonsoft.com/json

的另一种优雅方式
            var ushortArray = JsonConvert.DeserializeObject<List<ushort>>(myString);

答案 5 :(得分:-1)

您可以执行类似

的操作
List<ushort> myUshorts = new List<ushort>("[200,3,4,5]".Trim('[', ']').Split(',').Select(ushort.Parse));

如果你知道输出的确切方式。