2013-11-03 50 views
0
public void LoadWorldMap() 
{ 
    string path = "..\\Bin\\Assets\\WorldMap\\WorldMap.txt"; 
    //Open the file and read it. 
    string[] fileText = File.ReadAllLines(path); 

    for (int index = 0; index < 320; index++) 
    { 
     string line = fileText[index]; 
     string[] tokens = line.Split(' '); 

     System.Console.WriteLine(tokens[0]); 
    } 
} 

文件看起來是這樣的:字符串不是分裂,而是文件被讀

0 0 0 0 0 

0 1 0 0 0 

0 2 0 0 0 

0 3 0 0 0 

0 4 0 0 0 

0 5 0 0 0 

沒有逗號,這就是爲什麼它是

line.Split(' '); 

然而,當我輸出令牌[0]它是整條線,而不是分割。 令牌[1]至令牌[4]爲空。

我在做什麼錯?

+0

你確定那些不是逗號的東西是空格而不是別的嗎? –

+0

我不明白。當你調試你的代碼時你沒有看到'0 1 0 0 0'和'0 4 0 0 0'? –

+0

我正在嘗試爲每一行分割單行。所以令牌[0]應該只輸出0而沒有別的。因爲0是每行中的第一個字符串。 – user2948630

回答

0

正如其他人指出的數字之間的字符不是空格,但空間像字符。以下正則表達式將正確拆分數字標記,無論該行中的空間類型char是什麼。

string[] tokens = Regex.Split(line, @"\s+"); 
1

正如user2948630提到的那樣,空格字符可能是標籤空格。如果您從網頁中複製文本或其他一些不可打印的字符,它也可能是一個不間斷的空間。爲了確保分割字符適用於所有可能的空間,您可以使用正則表達式。例如,

string[] tokens = Regex.Split(line, @"\s+"); 

\ s元字符用於查找空白字符。

空白字符可以是:

  • 空格字符
  • 製表符
  • 回車字符
  • 新行字符
  • 垂直製表符
  • 換頁符

+會查找一個或多個空白字符。

相關問題