2015-11-10 37 views
0

爲什麼下面的代碼打印'foo' Length: 10000VB.NET String.Length比字符串長

如何丟棄未使用的數組元素,使字符串爲「Length:3」?

Dim arr(9999) as char 

Dim sw As StreamWriter = New StreamWriter("example.txt") 
sw.WriteLine("foo") 
sw.Close() 

Dim sr As StreamReader = New StreamReader("example.txt") 
sr.ReadBlock(arr, 0, 10000) 
sr.Close() 

Dim con as string = New String(arr) 
Console.WriteLine(String.Format("'{0}' Length: {1}", con, con.Length.ToString())) 
+1

用於創建字符串的數組(arr)長度爲10個字符。事實上,你只填寫3個字符(留下其餘的空)是另一種 – Plutonix

回答

3

您可以使用Substring

Dim newString As String = con.Substring(0, 3) 
+0

如果我不知道數組的內容有多長時間,我爲第二個參數傳遞了什麼? – Dan

+0

@丹:你是什麼意思,你不知道?您爲3個字符指定了常量值。在這種情況下,你的答案是3.請給出另一個例子。 – Neolisk

+0

這是一個文件緩衝區:'oFile.ReadBlock(arrFileBuffer,0,16000)'。如果文件只包含12個字符,我如何獲得長度爲12而不是長度爲16000的字符串?我不能使用'oFile.ReadToEnd()',因爲有時文件是40000個字符,在這種情況下我只想讀第一個16000. – Dan

2

不知道爲什麼這工作,但....

Dim lChar As New List(Of Char) 
    lChar.Add("f") 
    lChar.Add("o") 
    lChar.Add("o") 
    Dim con2 As String = lChar.ToArray ' ????? 
    Debug.Print("'" & con2 & "' Length: " & con2.Length) 

我想一個字符串是真的在心臟的數組。

+0

你從一個長度爲3的列表開始,而我有一個長度爲10的char數組。不知道這個答案是如何與問題相關的。 – Dan

+0

示例代碼使用每個.Add都動態增長的List。答案並不直接相關,但顯示了避免預先標註數組的另一種方法。 – rheitzman

+0

在我的問題的上下文中,需要一個固定維數組,因此具體使用該類型的問題。我知道有很多其他方法來表示字符集合,但是沒有一個與這個特定的問題相關,除非您可以有效地將數組轉換爲正在使用的類型(我試圖避免不必要的內存拷貝,因爲實際上數組是一個大文件,不是3個字符的字符串)。 – Dan