我希望我的程序读取所有字符1到1的文本文件,并且当它找到反转的逗号(")时,它会在该反转逗号之前添加分号。例如,我们在文本文件中有一个段落如下:
这是一个有很多很多角色和一些角色的段落 姓名和日期。我的名字" Sam"我出生在" 12:00" "中午&#34 ;.我住在 "任何地方"
现在我希望输出如下:
这是一个有很多很多角色和一些角色的段落 姓名和日期。我的名字;" Sam;"我出生在;" 12:00;" ;"中午;&#34 ;.一世 住在;"任何地方;"
它应该使用文件流打开文件,然后读取字符,然后在找到反转的comman的地方添加分号。输出应该等于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();
}
}
}
输出: -
这是一个有很多很多角色和一些角色的段落 姓名和日期。我的名字&#34 ;; Sam&#34 ;;我出生在&#34 ;; 12:00&#34 ;; &#34 ;;中午&#34 ;;。一世 住在&#34 ;;任何地方&#34 ;; 。 154个字符
我想在倒置逗号之前使用分号。任何帮助,将不胜感激。感谢
答案 0 :(得分:7)
交换操作的顺序:
if (Convert.ToInt32(ch) == 34)
{
Console.Write(@";");
}
Console.Write(ch);
e.g。在您决定输出分号之后,不要写原始字符。
答案 1 :(得分:1)
尝试ch = (char)reader.Peek();
这将读取下一个字符而不读它。然后,您可以使用它来检查它是否是"或不是插入:相应
if (Convert.ToInt32((char)read.Peek()) == 34) Console.Write(@";")
答案 2 :(得分:1)
你有来逐个字符地阅读吗?下面的代码将整个块作为一个块,并返回一个包含所有行的列表。
var contents = File.ReadAllLines (@"C:\Users\user1\Documents\data.txt")
.Select (l => l.Replace ("\"", ";\""));
答案 3 :(得分:-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);
}
}
}