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

C# 如何将包含数组的字符串转换为列表<;ushort>?,c#,C#,例如,有一个 字符串str=“[2,3,4,5]” 如何将这个字符串类型的数组转换成一个列表,在这个列表中我可以得到ushort类型列表中的每个元素? 该字符串从ruby脚本中获取值“[2,3,4,5]”。使用linq,您可以像 var numbers = str.Where(y=>Char.IsDigit(y)).Select(p=>UInt16.Parse(p.ToString())).ToArray(); 使用linq,您可以像 var numbers = str.Where

例如,有一个 字符串str=“[2,3,4,5]” 如何将这个字符串类型的数组转换成一个列表,在这个列表中我可以得到ushort类型列表中的每个元素?
该字符串从ruby脚本中获取值“[2,3,4,5]”。

使用linq,您可以像

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

使用linq,您可以像

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

你可以这样做

List<ushort> myUshorts = new List<ushort>("[200,3,4,5]".Trim('[', ']').Split(',').Select(ushort.Parse));
List myUshorts=新列表(“[200,3,4,5]”)。修剪(“[”,“])。拆分(“,”)。选择(ushort.Parse));

如果您知道输出将是什么样子的话。

您可以这样做

List<ushort> myUshorts = new List<ushort>("[200,3,4,5]".Trim('[', ']').Split(',').Select(ushort.Parse));
List myUshorts=新列表(“[200,3,4,5]”)。修剪(“[”,“])。拆分(“,”)。选择(ushort.Parse));

如果您知道输出将是这样的话。

实际上非常简单。您只需编写一个方法来解析字符串并将其拆分。下面是一个基本示例,其中包含错误检查或优化。命名约定仅用于理解目的

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;
}
List ConvertToUShortList(字符串arrayText)
{
var result=新列表();
var bracketsRemoved=arrayText.Replace(“[”,”).Replace(“]”,”);
var numbersplit=bracketsRemoved.Split(新字符串[]{,“},System.StringSplitOptions.None);
foreach(numbersSplit中的变量编号)
{
添加(ushort.Parse(number));
}
返回结果;
}

我不需要解释这个方法中的任何东西,因为我已经给了东西起了名字。如果你什么都不懂,请告诉我,我会为你澄清。

其实很简单。您只需编写一个方法来解析字符串并将其拆分。下面是一个基本示例,其中包含错误检查或优化。命名约定仅用于理解目的

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;
}
List ConvertToUShortList(字符串arrayText)
{
var result=新列表();
var bracketsRemoved=arrayText.Replace(“[”,”).Replace(“]”,”);
var numbersplit=bracketsRemoved.Split(新字符串[]{,“},System.StringSplitOptions.None);
foreach(numbersSplit中的变量编号)
{
添加(ushort.Parse(number));
}
返回结果;
}
我不需要解释这个方法中的任何东西,因为我已经给了东西起了名字。如果您什么都不懂,请告诉我,我会为您澄清。

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

类程序
{
静态void Main(字符串[]参数)
{
var str=“[1,2,3,4,5,6,7,8,9]”;
var x=来自RubyArray(str);
控制台写入线(str);
Console.WriteLine(string.Join(“-”,x));
Console.ReadLine();
}
RubyArray的公共静态列表(字符串stra)
{
if(string.IsNullOrWhiteSpace(stra))返回新列表();
stra=stra.Trim();
斯特拉=斯特拉修剪('[',']');
返回区
.Split(新[]{',},StringSplitOptions.RemoveEmptyEntries)
.Select(s=>Convert.ToUInt16(s))
.ToList();
}
}
另一种方法(更多检查):

类程序
{
静态void Main(字符串[]参数)
{
var str=“[1,2,3,4,5,6,7,8,9]”;
var x=来自RubyArray(str);
控制台写入线(str);
Console.WriteLine(string.Join(“-”,x));
Console.ReadLine();
}
RubyArray的公共静态列表(字符串stra)
{
if(string.IsNullOrWhiteSpace(stra))返回新列表();
stra=stra.Trim();
斯特拉=斯特拉修剪('[',']');
返回区
.Split(新[]{',},StringSplitOptions.RemoveEmptyEntries)
.Select(s=>Convert.ToUInt16(s))
.ToList();
}
}

由于此字符串使用“类似Json”的格式,因此可以使用以下代码:

JavaScriptSerializer serializer = new JavaScriptSerializer();
var array = serializer.Deserialize<ushort[]>("[2,3,4,5]");
JavaScriptSerializer serializer=新的JavaScriptSerializer();
var数组=序列化程序。反序列化(“[2,3,4,5]”);

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

,因为此字符串使用“类似Json”的格式,所以您可以使用以下代码:

JavaScriptSerializer serializer = new JavaScriptSerializer();
var array = serializer.Deserialize<ushort[]>("[2,3,4,5]");
JavaScriptSerializer serializer=新的JavaScriptSerializer();
var数组=序列化程序。反序列化(“[2,3,4,5]”);

您只需要使用Newtonsoft的Json.net()以另一种优雅的方式引用System.Web.Extensions程序集

var-ushortArray=JsonConvert.DeserializeObject(myString);

使用Newtonsoft的Json.net()的另一种优雅方式

var-ushortArray=JsonConvert.DeserializeObject(myString);

这给了我一个char[]数组。但是我想要一个ushort类型的数组。@harryerramsety否。更新后的代码将为您提供一个uint16[],它将为我提供一个char[]数组。但是我想要一个ushort类型的数组。@harryerramsety否。更新后的代码将为您提供一个uint16[]