1

このコードを使用して、Web API を介して CSV ファイルからデータを取得しています

private List<Item> items = new List<Item>();

        public ItemRepository()
        {
            string filename = HttpRuntime.AppDomainAppPath + "App_Data\\items.csv";

            var lines = File.ReadAllLines(filename).Skip(1).ToList();

            for (int i = 0; i < lines.Count; i++)
            {
                var line = lines[i];

                var columns = line.Split('$');

                //get rid of newline characters in the middle of data lines
                while (columns.Length < 9)
                {
                    i += 1;
                    line = line.Replace("\n", " ") + lines[i];
                    columns = line.Split('$');
                }

                //Remove Starting and Trailing open quotes from fields
                columns = columns.Select(c => { if (string.IsNullOrEmpty(c) == false) { return c.Substring(1, c.Length - 2); } return string.Empty; }).ToArray();


                var temp = columns[5].Split('|', '>');
                items.Add(new Item()
                {
                    Id = int.Parse(columns[0]),
                    Name = temp[0],
                    Description = columns[2],

                    Photo = columns[7]



                });
            }
        }

しかし、CSV ファイルは、アポストロフィの代わりに特殊文字を含むデータを返しました。

たとえば、CSV ファイルには、&#8217;"There's" である必要がある There や "John's"&#8217;である必要がある "John s" などの値があります。これ&#8217;は、アポストロフィの代わりにあります。

アポストロフィだけを表示するためにこれを取り除くにはどうすればよいですか。この種のデータは Name = temp[0], Description = columns[2],

4

1 に答える 1

1

HttpUtility.HtmlDecode を使用して文字を変換できます。次に例を示します。

var withEncodedChars = "For example in the CSV file the are values such as There&#8217;s which should be There's or John&#8217;s which should be John's. This &#8217; is there instead of an apostrophe.";

Console.WriteLine(HttpUtility.HtmlDecode(withEncodedChars));

これをコンソール アプリで実行すると、次のように出力されます。

たとえば、CSV ファイルには、There's である必要がある There's や John's である必要がある John's などの値があります。この ' は、アポストロフィの代わりにあります。

于 2013-10-31T12:19:16.673 に答える