9

我希望我的程序读取一个文本文件中的所有字符 1 到 1 并且无论在哪里找到双引号 ("),它都会在该引号之前添加一个分号。例如,我们在文本文件中有一个段落,如下所示:

这是一个包含大量字符以及一些名称和日期的段落。我的名字“山姆”我出生在“中午”“12:00”。我住在“任何地方”。

现在我希望输出如下:

这是一个包含大量字符以及一些名称和日期的段落。我的名字;“山姆;” 我出生于 ;"12:00;" ;“中午;”。我住在“任何地方” .

它应该使用文件流打开文件,然后读取字符,然后在找到引号的地方添加分号。并且输出应该等于 textbox1.Text。

这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            
            char ch;
            int Tchar = 0;
            StreamReader reader;
            reader = new StreamReader(@"C:\Users\user1\Documents\data.txt");
            do
            {
                ch = (char)reader.Read();
                Console.Write(ch);
                if (Convert.ToInt32(ch) == 34)
                {
                    Console.Write(@";");
                }
                Tchar++;
            } while (!reader.EndOfStream);
            reader.Close();
            reader.Dispose();
            Console.WriteLine(" ");
            Console.WriteLine(Tchar.ToString() + " characters");
            Console.ReadLine();
        }
    }
}

这是输出:

这是一个包含大量字符以及一些名称和日期的段落。我的名字“;山姆”; 我出生于“;12:00”;“;中午”;。我住在“;任何地方”; . 154 个字符

我想要引号前的分号。任何帮助,将不胜感激。谢谢!

4

4 回答 4

7

交换操作顺序:

    if (Convert.ToInt32(ch) == 34)
    {
        Console.Write(@";");
    }
    Console.Write(ch);

例如,在您决定是否输出分号之前不要写原始字符。

于 2013-05-17T21:44:59.323 回答
1

尝试ch = (char)reader.Peek();

这将在不阅读的情况下告诉您下一个字符。然后,您可以使用它来检查它是否是 " 或不是插入:相应地

if (Convert.ToInt32((char)read.Peek()) == 34) Console.Write(@";")
于 2013-05-17T21:46:53.510 回答
1

一定要一个字一个字地读吗?下面的代码将把整个事情作为一个块来完成,并返回一个包含所有行的列表。

var contents = File.ReadAllLines (@"C:\Users\user1\Documents\data.txt")
                   .Select (l => l.Replace ("\"", ";\""));
于 2013-05-17T21:49:23.007 回答
-1
using System;
using System.IO;
using System.Text;

namespace getto
{
  class Program
  {
     static void Main(string[] args)
     {
         var path = @"C:\Users\VASANTH14122018\Desktop\file.v";

         string content = File.ReadAllText(path, Encoding.UTF8);
        Console.WriteLine(content);
        //string helloWorld = "Hello, world!";
        foreach(char c in content)
            {
                Console.WriteLine(c);
            }
        Console.Write("Press any key to continue . . . ");
        Console.ReadKey(true);
    }
  }
}
于 2020-06-05T15:34:10.173 回答