簡體   English   中英

將數組的字符串表示形式轉換為數組-C#

[英]Convert string representation of an array into an array - C#

給定此字符串:

“ [[某個價值”,“另一個價值”,“三個價值”]”

將其轉換為數組的最有效方法是什么? 還是任何可枚舉類型?

編輯:數組將包含內部字符串值:

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

好吧,如果您可以假設每個項目都沒有逗號,那么它可能會像下面這樣簡單:

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反序列化器,如果確實可以通過這種方式反序列化的話

這只是一種可能的方法:

        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(',');

有關拆分字符串的更多信息,可以使用MSDN

希望能幫助到你。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM