2014-09-25 80 views
3

我想知道是否有人可以提供幫助。我正在製作一個將文本轉換爲ASCII的程序。但是,我希望我的程序忽略空格。因此,「IT A」看起來應該是這樣的:7384 876583 65My For Loop跳過我的IF聲明

當我使用VB的Step Into功能時,我不明白爲什麼。正如你可能會說,我是一個初學者,所以任何具體的幫助將不勝感激。我的代碼如下所示:

Dim PlainText, ConvertedLetter As String 
    Dim LetterToConvert As Char 
    Dim AscNumber, Counter As Integer 
    ConvertedLetter = "" 
    PlainText = txtPlain.Text 
    For Counter = 1 To Len(PlainText) 
     LetterToConvert = Mid(PlainText, Counter, 1) 
     If PlainText = " " Then 
      ConvertedLetter = " " 
     Else : AscNumber = Asc(LetterToConvert) 
      ConvertedLetter = ConvertedLetter & AscNumber 
     End If 
    Next 
    txtAscii.Text = ConvertedLetter 
+1

也不是在VB中有一個「IF函數」和「Step Into Feature」。在您的IDE中有if-STATEMENTS和DEBUGGER-函數 – specializt 2014-09-25 10:13:42

回答

2

因爲您將PlainText(它是整個字符串)與「」進行比較。這將需要:

如果LetterToConvert = 「」 那....

+0

謝謝感謝您的快速響應。這似乎是正確的解決方案,因爲它是有道理的,但是當我嘗試它時,調試顯示只要到達原始文本中的空間,轉換後的信件就會被擦除。因此,「它是A」最終爲65 – RickTicky 2014-09-25 10:24:27

+1

ConvertedLetter是您的輸出字符串,因此您需要在其他情況下繼續構建它。ConvertedLetter = ConvertedLetter&「」 – Ian 2014-09-25 10:31:27

+0

對!我認爲這表明我的邏輯存在缺陷。我構建了ConvertedLetter = ConvertedLetter&「」作爲Then語句的一部分,並且工作正常!謝謝你 – RickTicky 2014-09-25 10:53:16

1

試試這個:

Dim PlainText, ConvertedLetter As String 
ConvertedLetter = "" 
PlainText = "IT WAS A" 
For Each c As Char In PlainText 'iterate through each character in the input 
    If c <> " " Then ' check whether c is space or not 
     ConvertedLetter &= Asc(c).ToString()' ascii value is taken if c<>" " 
    Else 
     ConvertedLetter &= " " ' c is space means add a space 
    End If 
Next 
MsgBox(ConvertedLetter) ' display the result 

你會得到的輸出作爲

7384 876583 65

+0

是的,它確實 - 非常聰明!我之前沒有看到過這樣的內容,因此您的額外評論非常有幫助。非常感謝你。我仍然想知道,原始代碼中的缺陷在哪裏。 – RickTicky 2014-09-25 10:37:43