将数组的字符串表示形式转换为数组- c#

本文关键字:数组 转换 字符串 表示 | 更新日期: 2023-09-27 18:15:27

给定这个字符串:

"("价值","另一个值","价值三个"]"

将其转换为数组的最有效方法是什么?或者任何可枚举类型?

编辑:数组将包含内部字符串值:

arr[0] = some value
arr[1] = another value
arr[2] = value three

将数组的字符串表示形式转换为数组- c#

json-array,使用http://james.newtonking.com/json

 public static T JsonDeserialize<T> (string jsonString)
 {
     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
     MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
     T obj = (T)ser.ReadObject(ms);
     return obj;
 }

这只是一种可能的方法:

        var str = "['some value','another value','value three']";
        // eliminate '[' and ']'
        str = str.Substring(1, str.Length - 2);
        // remove '
        str = str.Replace("'", string.Empty);
        // split it in a array
        var items = str.Split(',');

关于分割字符串的更多信息,您可以使用die MSDN

希望能有所帮助。

好吧,如果你可以假设每个条目都没有逗号,那么它可以像这样直接:

const string value = "['some value','another value','value three']";
var array =
   value
   .Substring(1, value.Length - 2)
   .Split(',')
   .Select(item => item.Substring(1, item.Length - 2))
   .ToArray();

如果你不能假设没有逗号,但可以假设没有撇号-逗号-撇号的序列,那么你可以这样做:

const string value = "['some value','another value','value three']";
var array =
   value
   .Substring(1, value.Length - 2)
   .Split(new[] { "','" }, StringSplitOptions.RemoveEmptyEntries)
   .ToArray();
array[0] = array[0].Substring(1, array[0].Length - 1);
int x = array.Length - 1;
array[x] = array[x].Substring(0, array[x].Length - 1);

否则你的选项是:

  • "手动"遍历数据,跟踪每对撇号的内部内容
  • 使用正则表达式,虽然我不确定这将如何工作
  • 如Igor所说,使用JSON反序列化器,如果这确实是可以反序列化的
string s = "['some value','another value','value three']";
s=s.Replace("[", "").Replace("'","").Replace ("]","") ; 
List<string> names = s.Split(',').ToList<string>();