将数组的字符串表示形式转换为数组- c#
本文关键字:数组 转换 字符串 表示 | 更新日期: 2023-09-27 18:15:27
给定这个字符串:
"("价值","另一个值","价值三个"]"
将其转换为数组的最有效方法是什么?或者任何可枚举类型?
编辑:数组将包含内部字符串值:
arr[0] = some value
arr[1] = another value
arr[2] = value three
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>();