0

Excel ファイルを読み書きするクラスの作成に問題があります。ファイルからデータを読み込む必要があります (1 列のみ)。次に、文字列入力で角かっこ [] やかっこ () を検索する必要があります。行にそれらが含まれている場合は、それらの中の情報を取得し、回答をスラッシュ (/) で区切る (分割する) 必要があります。変数の分割でエラーが発生し続けます。誰かが私を正しい方向に向けることができますか? ありがとう!

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace DataExcelApp
{
    public class ExcelApp
    {
        private static void Main()
        {
            //make connection to document
            var fileName = string.Format("C:/Users/kbangert/Desktop/Karpel/ChargeLanguage.xlsx", Directory.GetCurrentDirectory());
            var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

            //first query to document
            var adapter = new OleDbDataAdapter("SELECT * FROM [ChargeLanguage] WHERE [description] != string.Empty", connectionString);
            var ds = new DataSet();
            adapter.Fill(ds, "descriptions");

            //DataTable data = ds.Tables["descriptions"];
            var data = ds.Tables["descript"].AsEnumerable();

            if (data != null)
            {
                var entry = data.ToString();
                var pattern = @"\[(.*?)\]";
                var matches = Regex.Matches(entry, pattern);

                foreach (Match m in matches)
                {
                    Console.WriteLine(m.Groups[1]);
                }

                string[] words = matches.Split('/');
                foreach (string word in words)
                {
                    Console.WriteLine(word);
                }
            }    
4

1 に答える 1

2

この行で

string[] words = matches.Split('/');

matchesMatchオブジェクトのコレクションです。その方法はありませんSplit

あなたはおそらくこれをしたいでしょう:

foreach (Match m in matches)
{
    Console.WriteLine(m.Groups[1]);

     string[] words = m.Groups[1].Value.Split('/');
     foreach (string word in words)
        Console.WriteLine(word);
}
于 2013-09-26T13:22:16.790 に答える