【问题标题】:Convert an escaped string to an String Array将转义字符串转换为字符串数组
【发布时间】:2016-03-31 08:29:06
【问题描述】:

我有这种字符串

string input="[\"Modell\",\"Jan.\",\"Feb.\",\"Mrz.\",\"Apr.\",\"Mai\",\"Jun.\",\"Jul.\",\"Aug.\",\"Sep.\",\"Okt.\",\"Nov.\",\"Dez.\"]";

我需要把它转换成这样的:

string[] output;//convert "input" to it

我正在查看 hereherehere,但对我没有帮助。

我怎样才能将我的string 转换为string[] 是这种情况?

【问题讨论】:

  • 这是 JSON 输入,还是您自己的某种格式?周围有很多 JSON 反序列化库。

标签: c# string type-conversion


【解决方案1】:

您的输入具有 json 格式的字符串数组,因此您可以简单地在 nuget 上使用 非常流行的Newtonsoft.Json,然后反序列化回 C# 中的字符串数组:

var result = JsonConvert.DeserializeObject<string[]>(input);

【讨论】:

    【解决方案2】:

    这个呢:

    var output = input.Trim(new[] { '[', ']' }).Split(',').Select(x => x.Trim('\"')).ToArray();
    

    虽然这可能适用于您的示例,但我建议使用 @Cuong Le 提供的方法,使用 Json-Deserializer。它更加健壮,并且还可以处理嵌套结构。

    【讨论】:

    • 不会删除[],不会解决包含" 的子字符串的问题,例如string input="[\"Mod\\\"ell\"]"
    • 我把它改成了'input.Split(',').Select(x => x.Trim('\"')).ToArray();'但我得到 ' [0]: "[\"Modell" [1]: "Jan." [2]:“二月” [3]:“先生。” [4]:“四月” [5]:“麦” [6]:“君”。 [7]:“七月”。 [8]:“八月” [9]:“九月” [10]:“好的。” [11]:“十一月” [12]: "Dez.\"]"' 实际上 "Dez" 和 "Modell" 的反斜杠太多了..
    【解决方案3】:

    不是很好,但可以:

    string[] output = input.Replace("[", "").Replace("\"", "").Replace("]", "").Split(',').ToArray<string>();
    

    【讨论】:

    • "works" - 对于这个特定的例子。输入是 JSON,为此您只需使用 JSON 解析库。输入也可能包含逗号、引号和嵌套数组。
    • @CodeCaster 输入 看起来 像 JSON,并且可能是 JSON。但除非它是合同约定的 JSON,否则这种假设有点危险。过去我处理过很多“类似 XML”的格式,以至于我真的不再喜欢那些假设了之前可以使用 INI、CSV、XML 甚至 HTTP 来完成。
    • @Luaan 问题如此含糊,首先不应该回答。假设它是 not JSON 并且编写自己的解析器至少同样危险。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2017-11-27
    • 2018-03-08
    • 2022-01-23
    相关资源
    最近更新 更多