在 C# 中的文本文件中插入一个 运行 数字
Insert a running number in textfile in c#
我想在文本文件中添加一个 运行 数字,但它必须在特定的列中。等:第 1 行,第 15 列。
原始文件:它有数据名称、职业、出生日期、状态
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
在生日和状态之间转换file:insert运行数字
john teacher 1988 D001married
marcel engineer1976 D002single
emi professo1975 D003married
注意:每个数据都从它们自己的特定列开始。姓名从第 1 列开始,职业从第 7 列开始,生日从第 15 列开始,身份从第 20 列开始。
如何使用 C# 执行此操作。
遍历文本的每一行,运行每一行都像这样:
const int STATUS_START_COLUMN_NUM = 19;
line = line.Substring(0,STATUS_START_COLUMN_NUM - 1) + "D" + String.Format("{0:000}",i) + line.Substring(STATUS_START_COLUMN_NUM);
i++;
这是一个示例解决方案,它利用 StringBuilder
和 TextWriter
以及 string.Format()
和其他功能 Truncate
来获得正确的字符串长度。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplicationStringBuilder
{
class Program
{
static void Main(string[] args)
{
/*
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
*/
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("john", 6), Truncate("teacher", 8), 1988, Truncate("married", 7)));
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("marcel", 6), Truncate("engineer", 8), 1976, Truncate("single", 7)));
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("emi", 6), Truncate("professor", 8), 1975, Truncate("married", 7)));
string s = sb.ToString();
Console.WriteLine(s);
//Write to file
using (TextWriter tw = File.CreateText("C:\test.txt"))
{
tw.Write(s);
tw.Flush();
tw.Close();
}
Console.WriteLine("File written to C:\test.txt"); ;
Console.ReadLine();
}
static public string Truncate(string value, int max)
{
return value.Substring(0, Math.Min(value.Length, max));
}
}
}
这里发生的情况如下:
- 截断您传递给
Truncate
函数的每个字符串以仅获取给定最大值内的字符串
- 将每个值传递给
string.Format()
用所需的空格填充每个项目
- 通过
StringBuilder
构建所有字符串并将其转换为 string
- 创建一个文本文件并分配它
TextWriter
用之前构建的 string
填充它
这正是 String.Insert()
的用途。
List<string> data = new List<string>
{
"john teacher 1988 married",
"marcel engineer1976 single",
"emi professo1975 married"
};
Console.WriteLine("Before: ");
data.ForEach(Console.WriteLine);
Console.WriteLine();
int runningNumber = 1;
for (int i = 0; i < data.Count; i++)
{
data[i] = data[i].Insert(20, String.Format("D{0:000}", runningNumber));
runningNumber++;
}
Console.WriteLine("After: ");
data.ForEach(Console.WriteLine);
结果:
Before:
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
After:
john teacher 1988 D001married
marcel engineer1976 D002single
emi professo1975 D003married
我想在文本文件中添加一个 运行 数字,但它必须在特定的列中。等:第 1 行,第 15 列。
原始文件:它有数据名称、职业、出生日期、状态
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
在生日和状态之间转换file:insert运行数字
john teacher 1988 D001married
marcel engineer1976 D002single
emi professo1975 D003married
注意:每个数据都从它们自己的特定列开始。姓名从第 1 列开始,职业从第 7 列开始,生日从第 15 列开始,身份从第 20 列开始。
如何使用 C# 执行此操作。
遍历文本的每一行,运行每一行都像这样:
const int STATUS_START_COLUMN_NUM = 19;
line = line.Substring(0,STATUS_START_COLUMN_NUM - 1) + "D" + String.Format("{0:000}",i) + line.Substring(STATUS_START_COLUMN_NUM);
i++;
这是一个示例解决方案,它利用 StringBuilder
和 TextWriter
以及 string.Format()
和其他功能 Truncate
来获得正确的字符串长度。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplicationStringBuilder
{
class Program
{
static void Main(string[] args)
{
/*
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
*/
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("john", 6), Truncate("teacher", 8), 1988, Truncate("married", 7)));
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("marcel", 6), Truncate("engineer", 8), 1976, Truncate("single", 7)));
sb.AppendLine(string.Format("{0, -7}{1, -8}{2, -5}{3}", Truncate("emi", 6), Truncate("professor", 8), 1975, Truncate("married", 7)));
string s = sb.ToString();
Console.WriteLine(s);
//Write to file
using (TextWriter tw = File.CreateText("C:\test.txt"))
{
tw.Write(s);
tw.Flush();
tw.Close();
}
Console.WriteLine("File written to C:\test.txt"); ;
Console.ReadLine();
}
static public string Truncate(string value, int max)
{
return value.Substring(0, Math.Min(value.Length, max));
}
}
}
这里发生的情况如下:
- 截断您传递给
Truncate
函数的每个字符串以仅获取给定最大值内的字符串 - 将每个值传递给
string.Format()
用所需的空格填充每个项目 - 通过
StringBuilder
构建所有字符串并将其转换为string
- 创建一个文本文件并分配它
TextWriter
用之前构建的string
填充它
这正是 String.Insert()
的用途。
List<string> data = new List<string>
{
"john teacher 1988 married",
"marcel engineer1976 single",
"emi professo1975 married"
};
Console.WriteLine("Before: ");
data.ForEach(Console.WriteLine);
Console.WriteLine();
int runningNumber = 1;
for (int i = 0; i < data.Count; i++)
{
data[i] = data[i].Insert(20, String.Format("D{0:000}", runningNumber));
runningNumber++;
}
Console.WriteLine("After: ");
data.ForEach(Console.WriteLine);
结果:
Before:
john teacher 1988 married
marcel engineer1976 single
emi professo1975 married
After:
john teacher 1988 D001married
marcel engineer1976 D002single
emi professo1975 D003married