2009-11-25 105 views
2

我們中的一些人不幸仍然支持像VB6這樣的傳統應用程序。我忘記了如何解析一個字符串。如何解析vb6中的字符串?

給定一個字符串:

Dim mystring As String = "1234567890" 

如何在VB6遍歷每個字符,並做一些像

for each character in mystring 
     debug.print character 
    next 

在C#中,我會做一些像

char[] myChars = mystring.ToCharArray(); 
foreach (char c in theChars) 
{ 
    //do something with c 
} 

任何想法?

非常感謝

+0

你最終想要做什麼?查找字符串中是否存在某些內容?查找字符串中字符的位置? – curtisk 2009-11-25 15:47:57

+0

隨着字符串中的每個數字,我需要做一些事情。 debug.print將爲我做的伎倆,我可以從那裏拿它 謝謝 – 2009-11-25 15:54:08

+0

在C#中,你可以遍歷字符串,而不首先將其轉換爲字符數組:字符串mystring =「1234567890」; foreach(char c中的mystring){...}'。 – 2011-12-12 18:19:36

回答

9

您可以使用「MID」函數來獲取在單個字符:

Dim i As Integer 
For i = 1 To Len(mystring) 
    Print Mid$(mystring, i, 1) 
Next 

注意這是未經測試。

+3

請使用'Mid $'而不是'Mid' - 由於沒有使用任何變體,因此它更高效且更安全。 – Dario 2009-11-25 15:50:52

+0

對不起 - 我使用VB6已經有好幾年了。我會修改答案。 – 2009-11-25 16:46:28

2

沒有可能在字符串中使用foreach。

使用

Dim i As Integer 

For i = 1 To Len(YourString) 
    Result = Mid$(YourString, i, 1) 
Next 

注意到的Result類型是長度爲1的串,沒有字符或字節類型。

如果性能很重要,則必須將字符串轉換爲bytearray拳頭(使用StrConv),然後像這樣循環。

Dim i As Long 
For i = 0 To UBound(Data) 
    Result = Data(i) ' Type is Byte ' 
Next 

這樣效率更高。

+0

感謝您的工作!感謝 – 2009-11-25 15:58:09

+1

請注意,如果您使用StrConv將字符串轉換爲字節數組,您還可以使用當前系統代碼頁將其從Unicode轉換爲「ANSI」。 – MarkJ 2009-11-25 16:06:49

1

最簡單的方法是將字符串轉換爲一個字節數組,並遍歷字節數組(將每個字節轉換爲字符)。

Dim str As String 
Dim bytArray() As Byte 
Dim count As Integer 

str = "This is a string." 
bytArray = str 

For count = 0 To UBound(bytArray) 
    Debug.Print Chr(bytArray(count)) 
Next 
+0

不能像預期的那樣工作,因爲它有很多空字節。請注意,您不能在字節上應用'Chr',而只能在字符串上應用。 – Dario 2009-11-25 15:58:07

+1

請注意,如果您將字符串轉換爲像這樣的字節數組,您還可以使用當前系統代碼頁將其從Unicode轉換爲「ANSI」。 – MarkJ 2009-11-25 17:52:47

1

不要循環;相反,請設置對Microsoft VBScript正則表達式庫的引用,並使用正則表達式來實現「做某件事」的目標。

+0

+1值得考慮。這裏有一個鏈接http://www.regular-expressions.info/vb.html – MarkJ 2009-11-27 17:43:29