2009-12-01 52 views
1

我已經轉換這個現有的C#的.NET 2.0代碼(這似乎採取在一個字符串與任何字符和在該字符串僅返回編號):如何訪問.Net 1.1中的字符串(索引)?

private static string StripMIN(string min) 
    { 
     string result = string.Empty; 
     int digit = 0; 
     for (int i = 0; i < min.Length; i++) 
     { 
      if (int.TryParse(min[i].ToString(), out digit) == true) 
      { 
       result += min[i]; 
      } 
     } 
     return result; 
    } 

此VB.Net NET 1.1代碼:

Private Function StripMIN(ByVal min As String) As String 
     Dim result As String = String.Empty 
     Dim digit As Integer = 0 
     Dim i As Integer = 0 
     While i < min.Length 
      Me.SystemMessages.Text = "Char at " + i + " : " + min(i) 
      If TryParseInteger(min(i).ToString(), digit) = True Then 
       result += min(i) 
      End If 
      System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1) 
     End While 
     Return result 
    End Function 

我在min(i)才能上VB.Net代碼的第6行的錯誤消息。錯誤信息如下:

"Expression is not an array or a method, and cannot have an argument list" 

我不是很瞭解.net 1.1,找不到解決此錯誤的替代解決方案。有沒有人對我如何訪問這個字符串的每個字符有任何建議,並驗證它的一個數字並只返回.Net 1.1中的字符串的數字?

回答

6

您的問題是轉換爲VB,而不是框架更改。嘗試使用min.Chars(i)。見this MSDN article,這表明索引屬性(如果你在C#中看到min[i])在VB命名爲Chars

不過,我會用這樣的事情,而不是:

Private Function StripMIN(ByVal min As String) As String 
    Dim result as New StringBuilder() 

    ForEach c In min 
     If Char.IsDigit(c) Then 
      result.Append(c) 
     End If 
    End ForEach 

    Return result.ToString() 
End Function 
0

你應該嘗試使用最小變量的子串方法像這樣:

Me.SystemMessages.Text = "Char at " + i + " : " + min.Substring(i, 1) 

我認爲這是正確的。試試看,讓我知道你找到了什麼。我習慣了C#

+1

在這裏使用'Substring'會降低效率並降低可讀性。 'Substring'創建一個新的字符串,而不是簡單地返回一個'Char'。 – 2009-12-01 18:46:50

1

C#中的默認索引器min[x]對應於VB中的指定索引器min.Chars(x)

但是,您不需要循環字符串中的字符。您可以使用匹配所有的非數字字符的正則表達式將其刪除:

Private Function StripMIN(ByVal min As String) As String 
    Return Regex.Replace(min, "[^\d]+", String.Empty) 
End Function 
1

這個例子顯示了三種方法提取的VB2010 .NET 4.0字符串的字符。我沒有將.NET 1.1作爲測試平臺,但.Char()和.Substring()顯示在VB2003文檔中。第一種方法似乎沒有爲字符串類記錄,但它似乎在這個版本中沒有問題。 (左邊的變量不一定是Char數據類型。)

Dim chrCurrentCharacter As Char 
Dim strtemp As String = "abc" 
For counter As Integer = 0 To strtemp.Length 
    chrCurrentCharacter = strtemp(counter) 
    chrCurrentCharacter = strtemp.Chars(counter) 
    chrCurrentCharacter = CChar(strtemp.Substring(counter, 1)) 
Next