2017-01-04 7 views
0

私はvbで文字列を分割する方法について多くの例を見てきましたが、それらを私のために働かせることはできませんでした。"xy"を "x"と "y"に変換する

私が解決しようとしている問題は、座席番号が「A1」で、2つの変数が「A」、次に「1」になりたいということです。 Aの値を1にすることもできます。ASCII変換を知っていると非常に便利ですが、 "B"を2とすることも覚えておいてください。

If currentShowingID = BookingDetails(y).ShowingID Then 
    tempSeat = BookingDetails(y).SeatNO 
    Dim seat As String() = Split(tempSeat, "") 
    Dim down As String = seat(0) 
    Dim across As Integer = seat(1) 
End If 
+0

「vb.net」で質問にタグを付けてはいけませんか?なぜ 'visual-studio'タグですか? –

+2

私はあなたが '' D13 ''(または非常に大きな劇場の場合は' 'AC13'')のような値を持つことができると推測しています...おそらく正規表現がここでのよりよいアプローチです。 –

答えて

0

ASCIIテーブルが...それが表すことができるすべての文字のコードを持っているので、

  • A => 65
  • B => 66
  • C => 67
  • ...
  • Z => 90

...つまり、1から始まる各文字を表す数値を取得するには、その文字のASCIIコードから64を引く必要があります。以下のコードは、あなたが手紙を持っている場合、あなたの席は常に、一方では... ...

Dim location As String 
    location = "B1" 

    Dim row As Char 
    Dim rowId As Int32 
    Dim number As Char 

    row = location.Chars(0) 
    rowId = Asc(row) - 64 
    number = location.Chars(1) 

    Console.WriteLine($"Location: {location} | Row: {row}({rowId}) | Number: {number} |") 
    Console.ReadKey() 

を2つの文字(例:A1、C5 D9)を持っているだろうと仮定して、あなたのために正常に動作する必要がありますAZと9(例:A20、K15)よりも大きくすることができる数字から、私はそれをテストし、私たちが知っている...など

Dim number As Int32 

    [...] 

    row = location.Chars(0) 
    rowId = Asc(row) - 64 

    number = 0 
    Int32.TryParse(location.Substring(1), number) 

...として、別のパスを取るためにあなたをお勧めします!

+0

はいを​​明確にするために、数値は9以上になる可能性があります。私はあなたの提案を使用しているときに、変数番号に0の整数値を割り当てることができないため、エラーが発生します。 –

+0

回答の一部を変更しました。それは働いて、いくつかのより多くのテストを行う必要があり、それは劇場の他の画面のために動作させる必要があります。ありがとう! –

+0

私はあなたを助けることができてうれしい!変数番号の型を変えるように言ったことを忘れてしまった、私の悪いこと、私はそれを私のコードで見て、それを後で変更しました! (編集) – danieldeveloper001

関連する問題