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

时间:2014-07-30 05:18:35

标签: c#

鉴于此字符串:

“['某个值','另一个值','值三']”

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

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

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

4 个答案:

答案 0 :(得分:4)

这是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;
 }

答案 1 :(得分:0)

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

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);

否则你的选择是:

  • &#39;手动&#39;循环遍历数据,跟踪每对撇号内部的内容
  • 使用正则表达式,虽然我不确定它的效果如何
  • 正如Igor所说,使用JSON反序列化器,如果这确实是可以反序列化的东西

答案 2 :(得分:0)

这只是一种可能的方式:

        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

希望它有所帮助。

答案 3 :(得分:0)

string s = "['some value','another value','value three']";
s=s.Replace("[", "").Replace("'","").Replace ("]","") ; 
List<string> names = s.Split(',').ToList<string>();