Мой вариант использования - читать данные из текстового файла, просматривая местоположение файла, содержащего данные для цитирования. Данные из файла сохраняются в списке. Я использую arrayylist, чтобы получить данные и пройти через arrayylist и объединить каждую строку, затем создать выходной файл для хранения данных в одном столбце, как показано ниже

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    

Пожалуйста, помогите.

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
    }
0
kombo 22 Мар 2013 в 20:35
Вам необходимо предоставить соответствующие фрагменты вашего кода.
 – 
user1697575
22 Мар 2013 в 20:36
Я только что разместил свой код. меня не было
 – 
kombo
22 Мар 2013 в 21:03

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);
}
1
user1697575 25 Мар 2013 в 17:46
Без проблем. Вам следовало добавить к вашему вопросу тег "C #:". Это поможет лучше определить интересующую вас область.
 – 
user1697575
28 Мар 2013 в 17:04