2013-02-22 52 views
0

除了不讀取特殊字符,一切正常。 我的文件 「a.text」 包含以下內容:從c文本文件每次讀取一個字符中的數字,字母和特殊字符#

「ANBOCPDQERFSGTHUIVJWKXLYMZNAOBPCQDRESFTGUHVIWJXKYLZManbocpdqerfsgthuivjwkxlymznaobpcqdresftguhviwjxkylzm05162738495061728394 <:[?]>(,){'}"/~\!|@_#+$-%*^=&:<;>,(.)?[]'!{」}〜/ \ @ |#_ $ +% -^* & =」

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([email protected]!/"; 
      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只是爲了看看有什麼幫助。
H用這個elp我,所有的答覆表示讚賞。

回答

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

+0

對不起我的錯,這是我的文件的內容:「A000000B000010C000100D000110E001000F001010G001100H001110I010000J010010K010100L010110M011000N000001O000011P000101Q000111R001001S001011T001101U001111V010001W010011X010101Y010111Z011001a100000b100010c100100d100110e101000f101010g101100h101110i110000j110010k110100l110110m111000n100001o100011p100101q100111r101001s101011t101101u101111v110001w110011x110101y110111z11100101110110000111101100012111011001031110110011411101101005111011010161110110110711101101118111011100091110111001,同樣爲特殊字符我已經給二進制數 – 2013-02-23 05:06:26

+0

我得到一個字符串作爲字符串‘s’的輸入,然後再在每個字符字符串說一個數字,一個字母或特殊字符,我用二進制數字替換,並將其存儲在第二個字符串中我試圖用二進制數字加密數據後來解密我會用類似的用字符替換二進制數字的文件。 – 2013-02-23 05:12:17

+0

我的代碼替換了除特殊字符以外的所有內容,它根本不讀取它們,並跳過循環並讀取字符串中的下一個字符,從而爲輸出中特殊字符的二進制數字留下空白。 – 2013-02-23 05:20:40

相關問題