我的文字文件如下:
Contact Name | Contact Number
高于Contact Name\t\t|\t\tContact Number
而我正在使用以下代码删除\t\t|\t\t
:
using (StreamReader sr = File.OpenText(fileName))
{
string s = String.Empty;
while ((s = sr.ReadToEnd()) != null)
{
string[] line = s.Split(new string[] {"\t\t|\t\t"}, StringSplitOptions.RemoveEmptyEntries );
}
}
我正在使用断点来检查下面“line”变量中的值:
"Contact Name"
"Contact Number\r\n\r\n"
上面一行代码会移除\t\t|\t\t
,但会添加\r\n\r\n
。如何一次删除\t\t|\t\t
和\r\n\r\n
。请建议我。等待回复。感谢
答案 0 :(得分:0)
您可以使用:
s = s.TrimEnd(new char[] { '\r', '\n' });
这将删除字符串末尾的所有换行符。
答案 1 :(得分:0)
由于您尝试从文件中删除所有字符(例如\ t,\ n或\ r \ n),我建议您将所有文件内容作为字符串读取并执行简单的.Replace(string oldChar, string newChar)
,这是略微的比使用.Split('').Join('')
方法更快。
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(fileName))
{
String line;
while ((line = sr.ReadLine()) != null)
{
sb.AppendLine(line);
}
}
string content = sb.ToString();
// Remove all tabs and new lines
string cleanedContent = content.Replace('\t', String.Empty)
.Replace('\r', String.Empty)
.Replace('\n', String.Empty)
.Replace('|', String.Empty);
答案 2 :(得分:0)
您可以使用
string[] lines = s.Split('|', StringSplitOptions.None );
for(int i = 0; i < lines.Length; i++) lines[i] = lines[i].Trim();
for循环有点尴尬但你可以在结果的正常处理中的某处插入Trim()。
使用File.ReadLines替换StreamReader变得更加容易(对大型文件更有效):
//using (StreamReader sr = File.OpenText(fileName))
foreach(string dirtyLine in File.ReadLines(fileName))
{
string cleanLine = dirtyLine.Trim();
... use cleanLine
}
答案 3 :(得分:0)
您也可以拆分“\ r \ n \ r \ n”,它将被删除。
string[] line = s.Split(new string[] {"\t\t|\t\t", "\r\n\r\n"}, StringSplitOptions.RemoveEmptyEntries );
答案 4 :(得分:0)
按|
字符拆分文本,然后通过从每行的开头和结尾删除制表符,空格和换行符来修剪每一行(在这种情况下,您也可以使用不带参数的Trim()
,因为您要删除的所有字符都被视为空白字符):
string text = "Contact Name | Contact Number";
var lines = text.Split('|').Select(s => s.Trim('\t', '\n', '\r', ' '));
这将产生两行序列:
"Contact Name"
"Contact Number"