C# 不使用特殊字符从文件中读取
我使用StreamReader打开一个文本文件并获取其内容。我只需要从文件中抓取文本,不带任何转义字符(\n、\r、\”,等等)。Google现在让我失望。有什么想法吗?你为什么不直接调用C# 不使用特殊字符从文件中读取,c#,.net,C#,.net,我使用StreamReader打开一个文本文件并获取其内容。我只需要从文件中抓取文本,不带任何转义字符(\n、\r、\”,等等)。Google现在让我失望。有什么想法吗?你为什么不直接调用ReadToEnd,然后拆分字符串 // using statement and whatever code here var rawContent = sr.ReadToEnd(); var usefulContent = rawContent.Split(new []{ "\r\n", "\\" },
ReadToEnd
,然后拆分字符串
// using statement and whatever code here
var rawContent = sr.ReadToEnd();
var usefulContent = rawContent.Split(new []{ "\r\n", "\\" },
StringSplitOptions.RemoveEmptyEntries);
注意:您需要调整Split
方法中的分隔符;这只是一个示例
您也可以简单地替换不需要的字符:
// using statement and whatever code here
var rawContent = sr.ReadToEnd();
var usefulContent = rawContent
.Replace("\r\n", "" )
.Replace("\\", "");
为什么不直接调用ReadToEnd
然后Split
字符串呢
// using statement and whatever code here
var rawContent = sr.ReadToEnd();
var usefulContent = rawContent.Split(new []{ "\r\n", "\\" },
StringSplitOptions.RemoveEmptyEntries);
注意:您需要调整Split
方法中的分隔符;这只是一个示例
您也可以简单地替换不需要的字符:
// using statement and whatever code here
var rawContent = sr.ReadToEnd();
var usefulContent = rawContent
.Replace("\r\n", "" )
.Replace("\\", "");
从文件中读取的文本中没有转义字符。转义字符在编写字符串文字时使用,例如在程序代码中。我假定您的意思是要用纯空格替换任何写空格字符
您可以使用正则表达式匹配空白字符,并将其替换为空格。使用文件更容易。ReadAllText
从文件中读取文本:
string text = Regex.Replace(File.ReadAllText(fileName), @"[\r\n\t ]+", " ");
从文件中读取的文本中没有转义字符。转义字符在编写字符串文字时使用,例如在程序代码中。我假定您的意思是要用纯空格替换任何写空格字符
您可以使用正则表达式匹配空白字符,并将其替换为空格。使用文件更容易。ReadAllText
从文件中读取文本:
string text = Regex.Replace(File.ReadAllText(fileName), @"[\r\n\t ]+", " ");
如果您试图在流式处理时执行此操作,请在while循环中调用StreamReader.Read(),并逐个测试字符
如果您能够将整个文件内容捕获到一个字符串中,请使用正则表达式去除不需要的字符。请查看RegexHero:如果您试图在流式处理时执行此操作,请在while循环中调用StreamReader.Read(),并逐个测试字符
如果您能够将整个文件内容抓取到一个字符串中,请使用正则表达式去除不需要的字符。请检查RegexHero:假设您已在字符串中读取整个文件
for (int i = 0; i < s.Length; i++)
{
if (char.IsLetterOrDigit(s, i)) // or if (!char.IsWhiteSpace(s, i))
{
// append to StringBuilder
}
}
for(int i=0;i
如果IsleterOrdGit或IsWhiteSpace不适合您的需要,您可以创建自己的方法并调用它。假设您已在字符串s中读取整个文件
for (int i = 0; i < s.Length; i++)
{
if (char.IsLetterOrDigit(s, i)) // or if (!char.IsWhiteSpace(s, i))
{
// append to StringBuilder
}
}
for(int i=0;i
如果IsleterOrdGit或IsWhiteSpace不适合您的需要,您可以创建自己的方法并调用它。您可以使用通用函数跳过所有不需要的字符:
public string SkipChars(string InputString, char[] CharsToSkip)
{
string result = InputString;
foreach (var chr in CharsToSkip)
{
result = result.Replace(chr.ToString(), "");
}
return result;
}
用法:
string test = "one\ntwo\tthree";
MessageBox.Show(SkipChars(test, new char[] { '\n', '\t' }));
您可以使用通用函数跳过所有不需要的字符:
public string SkipChars(string InputString, char[] CharsToSkip)
{
string result = InputString;
foreach (var chr in CharsToSkip)
{
result = result.Replace(chr.ToString(), "");
}
return result;
}
用法:
string test = "one\ntwo\tthree";
MessageBox.Show(SkipChars(test, new char[] { '\n', '\t' }));