2017-06-11 4 views
-1

を失敗しました「:」またはASCII値にそう何が変数textval変数に参照すると、上記のコードは、ワード(2)COLONがある二文字の任意の値を与えるものではありません「Visual Basicの2015」の文字にアスキーを変換するには、私は、Visual Basicで、それぞれの文字に数値ASCII値から次の変換をしていますが、それは無残に失敗した理由を

Dim i As Integer 
    Dim dec As String 
    Dim original As Integer 
    Dim sentence As String 
    Dim inter As String 
    Dim pth =" c:\TESTER:\JESTER\MESTER " 
    textval="32 99 58 92 84 69 83 84 69 82 58 92 74 69 83 84 69 82 92 77 69 83 84 69 82 32" 
    textval = Trim(textval) 
    'Dim ts() As String = Split(textval) 
    Dim words As String() = textval.Split(New Char() {" "c}) 
    Label1.Text = words(0) + words(1) + words(2) 
    original = Int(ts(2)) 

パスのアスキーequivalintですアスキー番号の場合2961

どうすればよいですか?この問題を修正して、これをより普遍的にして特殊文字を取り込むことはできますか?

貴重な回答をお寄せいただきありがとうございます。

+0

ここでは変換を行っていません。スペースで文字列を分割するだけです。 – GSerg

+0

intから文字に変換するには 'Chr'が必要です。 –

+0

Pls最近の編集を確認してください.. –

答えて

2

整数値を文字に変換しません。これを解決するにはChr or ChrWを使用する必要があります。 Chrを使用して

ソリューション:ChrWを使用して

Dim textValues1 As String = "32 99 58 92 84 69 83 84 69 82 58 92 74 69 83 84 69 82 92 77 69 83 84 69 82 32" 
textValues1 = textValues1.Trim 
Dim textWords1 As String() = textValues1.Split(New Char() {" "c}) 
Dim strValue1 As String = "" 

For i As Integer = 0 To UBound(textWords1) 
    Dim numValue As Integer = 0 

    If Integer.TryParse(textWords1(i), numValue) Then 
     strValue1 &= Chr(CInt(numValue)) 
    End If 
Next 

Debug.Print(strValue1) 'output: c:\TESTER:\JESTER\MESTER 

ソリューション:

Dim textValues2 As String = "32 99 58 92 84 69 83 84 69 82 58 92 74 69 83 84 69 82 92 77 69 83 84 69 82 32" 
textValues2 = textValues2.Trim 
Dim textWords2() As String = textValues2.Split(New Char() {" "c}) 
Dim strValue2 As String = "" 

For j As Integer = 0 To UBound(textWords2) 
    Dim numValue As Integer = 0 

    If Integer.TryParse(textWords2(j), numValue) Then 
     strValue2 &= ChrW(CInt(numValue)) 
    End If 
Next 

Debug.Print(strValue2) 'output: c:\TESTER:\JESTER\MESTER 
+0

入力が無効な場合、これは例外をスローします。 – dbasnett

+0

なぜこの本物の質問は、Answerが完全に@SebastianBroschによって与えられたときにダウングレードされているのか理解していない多くのあなたの答えのためにありがとうございます100%この問題を誰かがupouboteこの問題の代わりに-2 –

+0

私はあなたのソリューション@セバスチャンBroschはどちらも問題に関連しています。 –

2

このコードは、あなたのアイデアを与える必要があり、次のコード例を参照してください。整数表現の文字列値は、変換前に整数であることが検証されています。

Dim textval As String = "32 a 99 58 92 84 69 83 84 69 82 58 92 74 69 83 84 69 82 92 77 69 83 84 69 82 32" 
    Dim cvals As New List(Of Char) 

    For Each s As String In textval.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries) 
     Dim ival As Integer 
     If Integer.TryParse(s, ival) Then 
      cvals.Add(ChrW(ival)) 
     End If 
    Next 

    Dim cv As String = cvals.ToArray ' c:\TESTER:\JESTER\MESTER 

このメソッドは、入力が有効であることを確認します。

2

一般的な「Visual Studio 2015」の回答をお探しの場合は、.Net Frameworkの既存機能を使用してください。バイトまたは文字に文字列を変換するには、次の文を考えてみましょう:

Dim bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(pth) 
Dim chars = System.Text.ASCIIEncoding.ASCII.GetChars(bytes) 
Dim stringValue = System.Text.ASCIIEncoding.ASCII.GetString(bytes) 

特殊文字が含まれている場合は、UTF8およびUnicodeのように、同様に他のエンコーディングを使用することができます。ここにはドキュメントへのリンクがあります:https://msdn.microsoft.com/en-us/library/system.text.asciiencoding(v=vs.110).aspx

関連する問題