在c#中一次读取一个字符的文本文件中的数字,字母和特殊字符

时间:2013-02-22 06:07:53

标签: c# file-io special-characters

一切正常,但不会读取特殊字符。 我的文件“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只是为了看到任何帮助。
请帮助我,所有回复都表示赞赏。

1 个答案:

答案 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