开发者

Read from file without special characters

Im using a StreamReader to open a text file and grab its contents.开发者_如何学Python I need to grab just the text from the file without any escape characters ( \n, \r, \", etc ). Google is failing me right now. Any ideas?


There are no escape characters in a text that you read from a file. Escape characters are used when you write a string literal, for example in program code. I assume that you mean that you want to replace any write space characters with plain spaces.

You can use a regular expression to match white space characters and replace them with spaces. It's easier to use the File.ReadAllText to read the text from the file:

string text = Regex.Replace(File.ReadAllText(fileName), @"[\r\n\t ]+", " ");


Why don't you just call ReadToEnd and then Split the string?

// using statement and whatever code here

var rawContent = sr.ReadToEnd();

var usefulContent = rawContent.Split(new []{ "\r\n", "\\" }, 
    StringSplitOptions.RemoveEmptyEntries);

Note: you'll want to tweak the separators in the Split method; this is just an example.

You could also simply Replace the unwanted characters:

// using statement and whatever code here

var rawContent = sr.ReadToEnd();

var usefulContent = rawContent
    .Replace("\r\n", "" )
    .Replace("\\", "");


If you're trying to do it as you stream, call StreamReader.Read() in a while loop and test the characters one by one.

If you're able to grab the entire file contents into a string, use a regular expression to strip the undesirable characters. Check out RegexHero: http://regexhero.net/tester/


Assume you have read the entire file in a string s

for (int i = 0; i < s.Length; i++)
{
   if (char.IsLetterOrDigit(s, i)) // or if (!char.IsWhiteSpace(s, i))
   {
      // append to StringBuilder
   }
}

If IsLetterOrDigit or IsWhiteSpace don't fit your needs you can create your own method and call it.


You may use universal function for skipping all characters you not need:

public string SkipChars(string InputString, char[] CharsToSkip)
{
  string result = InputString;
  foreach (var chr in CharsToSkip)
  {
    result = result.Replace(chr.ToString(), "");
  }

  return result;
}

usage:

string test = "one\ntwo\tthree";

MessageBox.Show(SkipChars(test, new char[] { '\n', '\t' }));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜