用数据表值替换文件中的文本
本文关键字:文本 文件 替换 数据表 | 更新日期: 2023-09-27 18:22:19
我们有一个示例文本文件,其中包含文本:
上帝为爱他的人准备的东西
我们将文本读取到数据表中,并分配一些值,如下所示:
The 1
----------
things 2
----------
God 3
----------
has 4
----------
prepared 5
----------
for 6
----------
those 7
----------
who 8
----------
love 9
----------
him 10
----------
我们正在尝试用这些相应的数字替换输入文件中的文本。有可能吗?如果可能的话,我们该怎么做?
第2版:我们这样编辑代码:
:
void replace(){
string s1, s2;
StreamReader streamReader;
streamReader = File.OpenText("C:''text.txt");
StreamWriter streamWriter = File.CreateText("C:''sample1.txt");
int x = st.Rows.Count;
int i1 = 0;
// Now, read the entire file into a string
while ((line = streamReader.ReadLine()) != null)
{
for (int i = 0; i < x; i++)
{
s1 = Convert.ToString(st.Rows[i]["Word"]);
s2 = Convert.ToString(st.Rows[i]["Binary"]);
s2+="000";
char[] delimiterChars = { ' ', ''t' };
string[] words = line.Split(delimiterChars);
// Write the modification into the same file
string ab = words[i1]; // exception occurs here
// Console.WriteLine(ab);
streamWriter.Write(ab.Replace(s1, s2));
i1++;
}
}
streamReader.Close();
streamWriter.Close();
}
但是我们得到了一个"数组索引越界"的异常。我们找不到问题。提前感谢
这里有一些代码可以帮助你开始,它还没有经过广泛的测试:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
File.WriteAllText("sample1.txt", "The things God has prepared for those who love him the");
string text = File.ReadAllText("sample1.txt").ToLower();
var words = text
.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Distinct()
.OrderByDescending(word => word.Length);
var values = new Dictionary<string, int>();
for (int i = 0; i < words.Count(); i++)
{
values.Add(words.ElementAt(i), i + 1);
}
foreach (var kvp in values)
{
text = text.Replace(kvp.Key, kvp.Value.ToString());
}
File.WriteAllText("sample1.txt", text);
Console.WriteLine("Press ENTER to exit");
Console.ReadLine();
}
}
}
它创建一个测试文本文件,读取它,将它转换为小写,为不同的单词创建标识符,并根据这些标识符替换文本。长单词在短单词之前被替换,以提供一点糟糕的替换预防。
更新:我刚刚注意到问题已经更新,不再可以在一个字符串中读取整个文件叹气。。所以我的答案只适用于你一口气读写所有文本的时候,也许你可以在读写每个单词的时候重复使用其中的一部分。