如何使用 C# 正确拆分字符串数组



我有一个简单的 php 脚本,它在后端使用 json_encode 方法输出一个字符串数组。 它输出如下:

["8090123","8090456","8090789","8090321","8090654"]

现在,我想在我的 C# 代码中解析它,但我似乎无法正确解析它。

下面是我的 C# 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WebClient wc = new WebClient())
            {
                string myString = wc.DownloadString("https://magforex.biz/list.php");
                string[] words = myString.Split(',');
                for (var i = 0; i < words.Length; i++)
                {
                    // i just hardcoded the index for now
                    Console.WriteLine(words[0]); 
                    break;
                }
                Console.ReadLine();
            }  
        }
    }
}

代码运行良好,但它输出以下结果["8090123"这不是我想要的。

抱歉,因为我刚刚开始使用 C#,对它的了解有限。

我想要的只是字符串8090123以便以后可以进行比较。

感谢您提前提供帮助。

使用适当的 JSON 解析库(如 Newtonsoft.Json)将 JSON 字符串解析为静态类型的类模型:

string[] words = JsonConvert.DeserializeObject<string[]>(myString);

你只是错过了一个步骤:

string[] words = myString.Trim(new []{'[',']'}).Split(',');

老实说,除非您打算将JsonConvert用于更复杂的对象图,否则在这种情况下使用 json 反序列化程序有点矫枉过正,恕我直言。

编辑:如果你不想要引号,你可以使用LINQ投影...

string[] words = myString.Trim(new []{'[',']'})
                     .Split(',')
                     .Select(s => s.Trim(new[]{'"'}).ToArray();

顺便说一句,我对 Json.NET 非常熟悉,并且多年来一直是ServiceStack的人。但我偏向于更简单的解决方案,因为,嗯,奥卡姆剃刀,对吧?

为什么不做显而易见的事情并对您的 JSON 输入数据进行 JSON 解码呢?使用 Newtonsoft.Json:

JsonConvert.DeserializeObject<string[]>(myString)

如果您不想使用 Newtonsoft 库,您可以使用 JavaScriptSerializer 将字符串转换为数组。添加using System.Web.Script.Serialization;,然后:

string myString = wc.DownloadString("https://magforex.biz/list.php");
JavaScriptSerializer js = new JavaScriptSerializer();
string[] myArray = js.Deserialize<string[]>(myString);

您应该将其更改为word[i]开始,那么我不确定您要做什么。

相关内容

  • 没有找到相关文章

最新更新