一切正常,但不会读取特殊字符。 我的文件“a.text”包含以下内容:
“ANBOCPDQERFSGTHUIVJWKXLYMZNAOBPCQDRESFTGUHVIWJXKYLZManbocpdqerfsgthuivjwkxlymznaobpcqdresftguhviwjxkylzm05162738495061728394&LT;:[?]取代;(,){'}"/~\!|@_#+$-%*^=&:<;>,(.)?[
]'!{ ”}〜/ \ @ |#_ $ +% - ^ *&安培; =“
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication12
{
class Tester
{
static void Main(string[] args)
{
FileStream fs = new FileStream(@"d:\a.txt", FileMode.Open, FileAccess.Read);
string s = "aDFn3&5(09@Df0!/";
string c1 = "";
string c2 = "";
string c3 = "";
byte[] text2 = new byte[1];
byte[] text1;
int i,j,k=0;
while (k<16)
{
c1 = s.Substring(k, 1);
if (Regex.IsMatch(c1, @"^[A-Z]+$"))
{
i = 26;
j = 6;
fs.Seek(0, SeekOrigin.Begin);
}
else if (Regex.IsMatch(c1, @"^[a-z]+$"))
{
i = 26;
j = 6;
fs.Seek(182, SeekOrigin.Begin);
}
else if (Regex.IsMatch(c1, @"^[0-9]+$"))
{
i = 10;
j = 10;
fs.Seek(364, SeekOrigin.Begin);
}
else
{
i = 32;
j = 10;
fs.Seek(-352, SeekOrigin.End);
}
while(i>0)
{
fs.Read(text2, 0, 1);
c2 = System.Text.Encoding.Default.GetString(text2);
if (c1 == c2)
{
Console.Write(c2);
break;
}
fs.Seek(j, SeekOrigin.Current);
i--;
}
text1 = new byte[j];
fs.Read(text1, 0, j);
c3 = System.Text.Encoding.Default.GetString(text1);
Console.Write(c3);
Console.WriteLine();
k++;
}
}
}
}
我在我的输出中找到空格,我试图读取特殊字符并进行比较。
我猜输入c2字符串的编码是问题,但我尝试了所有编码类型,UTF8,UNICODE,UTF7,UTF32只是为了看到任何帮助。
请帮助我,所有回复都表示赞赏。
答案 0 :(得分:0)
我真的没有得到你想要达到的目标,或者为什么你想要一次读一个字符。
如果文件不是太大,我会读取整个文件,然后使用字符串。
类似的东西:
private static void parseFile(string fileName)
{
string content = File.ReadAllText(fileName, Encoding.UTF8);
foreach (char character in content)
{
if (character >= 'A' && character <= 'Z')
{
// handle A-Z
}
else if (character >= 'a' && character <= 'z')
{
// handle a-z
}
else if (character >= '0' && character <= '9')
{
// handle 0-9
}
else
{
// handle everything else
}
}
}
编辑:也不要混合字节和字符。阅读Unicode。