Разбить текстовый файл на определенное количество строк - C#
Формулировка задачи:
Построчно читаю текстовый файл, обрабатываю эту строку (добавляю теги к некоторым словам) и записываю ее в html страницу. Есть переменная которая задает кол во строк в выходном HTML файле, например 100, необходимо при достижении этого количества строк создавать новый html файл и тд пока не обработается весь текст, те если в текстовом файле 250 строк, то в итоге должно получится 3 html файла out1.html out2.html out3.html
вот код
как наиболее правильно организовать данный функционал?
public void TextToHtml(string filepath)
{
var writer = new StreamWriter("output.html", false, Encoding.GetEncoding(1251));
writer.Write("<!DOCTYPE HTML><html><head><title>Text</title></head><body>");
var lines = File.ReadLines(filepath, Encoding.GetEncoding(1251));
foreach (var line in lines)
{
string result_str = line;
string[] spl = line.Split(new char[] {' '});
foreach (var word in spl)
{
string word_temp = word.Trim(new char[] { ' ', ',', '.', '?', '!' });
if (dict.Contains(word_temp))
{
var pattern = String.Format(@"(?i)\b{0}\b", word_temp);
var word_tag = String.Format(@"<b><i>{0}</i></b>",word_temp);
result_str = Regex.Replace(result_str, pattern, word_tag);
}
}
writer.Write(result_str+"<br>");
}
writer.Write("</body></html>");
writer.Close();
}Решение задачи: «Разбить текстовый файл на определенное количество строк»
textual
Листинг программы
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace cyb24 {
class Program {
static void Main() {
//Что ищем
string[] ss = { "Вова", "Юля", "Адвокат Юли", "Евгений" };
//Читаем
int i=0,cnt=0,l=ss.Length;
StringBuilder sb=new StringBuilder();
StreamWriter sw=new StreamWriter("output_"+i+".html", false, Encoding.GetEncoding(1251));
sw.Write(@"<!DOCTYPE HTML><html><head><title>Text</title></head><body>");
using (StreamReader sr=new StreamReader(new FileStream(@"in.txt", FileMode.Open, FileAccess.Read, FileShare.Read),Encoding.GetEncoding(1251))) {
while (sr.Peek() >= 0) {
if (cnt==100) {
sw.WriteLine(@"</body></html>");
sw.Dispose();
i++;
sw=new StreamWriter("output_"+i+".html", false, Encoding.GetEncoding(1251));
sw.Write(@"<!DOCTYPE HTML><html><head><title>Text</title></head><body>");
cnt=0;
}
//Меняем
string strIn=sr.ReadLine();
sb.Append(strIn);
for (int j=0; j<l; j++)
foreach(Match m in Regex.Matches(strIn,ss[j],RegexOptions.IgnoreCase))
sb.Replace(m.Value, string.Format("<b><i>{0}</i></b>",m.Value));
sb.Append(@"<br>");
//Пишем
sw.WriteLine(sb.ToString());
sb.Clear();
cnt++;
}
}
sw.WriteLine("</body></html>");
sw.Dispose();
Console.ReadLine();
}
}
}