2013-10-15 53 views
0

我用這個功能在C#:當StreamReader(ReadLine)長於256時,如何從StreamReader中進行子字符串(ReadLine)。 C#

source = new StreamReader(sFel, System.Text.Encoding.ASCII, false, 512); 

使可能性裝載較長的文本,

但是我有Substring - 函數問題,當線路長度超過256個字符(它比串更大) 。我該如何解決這個問題?

我讀的線比字符串的最大值長。

+0

這是什麼語言?請[編輯]問題並添加適用的標籤。 – Dukeling

+0

這不是一個功能。這是一條線。對於256個字符的字符串,.NET沒有固有的限制,因此您需要向我們提供更多關於您正在做的事情的信息 - 這裏的總體目標是什麼,它與您向我們展示的產品線有什麼關係? –

回答

0

System.ArgumentOutOfRangeException未處理 Message =索引和長度必須引用字符串中的位置。 參數名:長度

代碼:

 srPlik = new StreamReader(sFel, System.Text.Encoding.ASCII, false, 512); //dluzszy ciag znakow niz string czyli 256 
     do 
     { 
      sLinia = srPlik.ReadLine(); 
      i=sLinia.IndexOf(",",13); 
      string kwota = sLinia.Substring(13,i-13); 

      dKwota_3 = Convert.ToDecimal(kwota)/100; 
      this.tb3.Text = dKwota_3.ToString(); 

      int j = sLinia.IndexOf(",", i+1); 
      string nr_rozl_odd_nad = sLinia.Substring(i+1,j-i-1); 


       int k=sLinia.IndexOf(",", j+1); 
       string nr_rozl_odd_odb = sLinia.Substring(j + 1, k - j - 1); 


       int l = sLinia.IndexOf(",", k + 1); 
       string rach_klienta_nadawcy = sLinia.Substring(k + 1, l - k - 1); 

       int m = sLinia.IndexOf(",", l + 1); 
       string rach_klienta_adresata = sLinia.Substring(l + 1, m - l - 1); 


       int n = sLinia.IndexOf(",", m + 1); 
       string nazwaiadres = sLinia.Substring(m + 1, n - m - 1); 


       int o = sLinia.IndexOf(",", n + 1); 
       string s9 = sLinia.Substring(n + 1, o - n - 1); 

       int p = sLinia.IndexOf(",", o + 1); 
       string s10 = sLinia.Substring(o + 1, p - o - 1); 

       int r = sLinia.IndexOf(",", p + 1); 
       string s11 = sLinia.Substring(p + 1, r - p - 1); 


       int koniec_tytulu = sLinia.IndexOf('"',r+2); //szukaj cudzysłowia czyli końca tytułu 
       string s12 = sLinia.Substring(r + 1, koniec_tytulu - r -2-1); 


       int t = sLinia.IndexOf(",", koniec_tytulu + 2); 
       string s13 = sLinia.Substring(koniec_tytulu + 2, t - koniec_tytulu - 2); 

       int u = sLinia.IndexOf(",", t + 1); 
       string s14 = sLinia.Substring(u + 1, u - t - 1); 

的問題出現在最後一行。

1

我解決了它。這是愚蠢的錯誤:

int u = sLinia.IndexOf(",", t + 1); 
string s14 = sLinia.Substring(t + 1, u - t - 1); // there should be "t+1" not "u+1" 

我不好,我想到了字符串的範圍。