2014-09-25 54 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