0

私のユースケースは、引用するデータを含むファイルの場所を参照して、テキストファイルからデータを読み取ることです。ファイルのデータはリストに保存されます。私はarraylistを使用してデータを取得し、arraylistをループして各文字列を連結し、出力ファイルを作成して、以下に示すようにデータを単一の列に格納します

Example of a string:    
20050000    
40223120    
40006523

サンプル出力:

'20050000',    
'40223120',    
'40006523'    
But my code is currently displaying the output in the format:
'20050000'20050000,
'40223120'20050000,
'40006523'40006523    

plsは役立ちます。

public List<string> list()
    {
        List<string> Get_Receiptlist = new List<string>();
        String ReceiptNo;
        openFileDialog1.ShowDialog();
        string name_of_Textfile = openFileDialog1.FileName;
        try
        {
            StreamReader sr = new StreamReader(name_of_Textfile);
            {
                while ((ReceiptNo = sr.ReadLine()) != null)
                {
                    Get_Receiptlist.Add(ReceiptNo);
                } // end while
                MessageBox.Show("Record saved in the Data list");// just for testing purpose.
            }// end StreamReader

        }
        catch (Exception err)
        {
            MessageBox.Show("Cannot read data from file");
        }
        return Get_Receiptlist;
    }
    private void button2_Click(object sender, EventArgs e)
    {
        string single_quotation = "'";
        string comma = ",";
        string paths = @"C:\Users\sample\Desktop\FileStream\Output.txt";
        if (!File.Exists(paths))
        {
            // Create a file to write to. 
            using (StreamWriter sw = File.CreateText(paths))
            {
                string[] receipt = list().ToArray();
                foreach (string rec in receipt)
                {
                    string quoted_receipt = single_quotation + rec + single_quotation + rec + comma;
                    sw.WriteLine(quoted_receipt);
                    sw.WriteLine(Environment.NewLine);
                }//foreach

                sw.Close();

                MessageBox.Show("Finish processing File");
            }//end using
        }// end if
    }
4

1 に答える 1

1

あなたのメソッドbutton2_Clickには、悪いループがあります:

string[] receipt = list().ToArray();
foreach (string rec in receipt)
{
  string quoted_receipt = single_quotation + rec + single_quotation + rec + comma;
  sw.WriteLine(quoted_receipt);
  sw.WriteLine(Environment.NewLine);
}//foreach

最初はJavaかどうかさえわかりませんが、Javaの場合は、このフラグメントを次のように置き換えます。

List<String> values = list();
for (int i = 0; i < values.size(); i++)
{
  String rec = values.get(i);
  StringBuilder quoted_receipt = new StringBuilder();
  if (i > 0) 
  {
    // add comma only if the first iteration already passed
    quoted_receipt.append(comma);
  }
  quoted_receipt.append(single_quotation).append(rec).append(single_quotation);
  sw.WriteLine(quoted_receipt.toString());
  sw.WriteLine(Environment.NewLine);
}
于 2013-03-25T13:46:09.373 に答える