2013-04-09 76 views
0

我正面臨着一個非常有趣的問題。 以下是我想從中獲取子字符串的字符串。泰語語言的子串

1¨Ñ§ËÇÑ´1xxxxxxxx     

指數0-2(長度3)是省ID 指數3-35(長度32)是在泰國的省名。

當我試圖採取子串全省像下面

string line = "1¨Ñ§ËÇÑ´1xxxxxxxx    "; 
line.Substring(3,32).Trim(); 

這說明我的錯誤如下

Index and length must refer to a location within the string. 

請記住,當我調試的代碼行總長度表明了我33應該是35.而省子字符串顯示爲30.

以下是密碼...

 using (StreamReader streamReader = new StreamReader("File06.txt")) 
     { 
      Console.WriteLine(".................. Content of " + file.Name + ".............."); 
      string codeOfProvince, nameOfProvince, line; 
      while ((line = streamReader.ReadLine()) != null) 
      { 
       codeOfProvince = line.Substring(0, 3).Trim(); 
       nameOfProvince = line.Substring(3,32).Trim(); 
       Console.WriteLine("codeOfProvince {0}, nameOfProvince {1}", codeOfProvince , nameOfProvince); 
      } 
      Console.WriteLine(".............................................................."); 
      Console.WriteLine(); 

我敢肯定,這將幫助你和文件有以下數據

1¨Ñ§ËÇÑ´1xxxxxxxx     
    2¨Ñ§ËÇÑ´2xxxxxxxx     
+1

整個字符串的長度是33.你正在做'子字符串(3,32)'這將超過33個字符,因此錯誤。 – Oded 2013-04-09 09:37:15

+1

你不能使用'Substring(3)'把所有東西都弄到底嗎? – 2013-04-09 09:37:26

+0

但是,當我數我的字符串,我給它有35長度。只要看一下「1?s?s?1xxxxxxxx」中有多少個字符。我在哪裏宣佈字符串。 – 2013-04-09 09:42:36

回答

0

行,所以我得到了答案。我正在用ANSI編碼讀取文件。當我將文件更改爲UNICODE編碼時,它開始工作。

+1

我要說的是,雖然我不會說泰語,但是對於我來說,看起來不像是有效的泰語,並且您正在使用不正確的編碼讀取文件。 – Jonathan 2013-04-09 10:42:56