2013-04-07 4 views
0

So. Я беру значения ASCII (числа) и превращая их в символы ASCII (буквы и символы). Мне удалось что-то придумать, но при использовании для каждого ... Затем он разделяет каждую отдельную цифру. Например, если я вхожу 82 (что соответствует R), я бы получил все, что соответствует 8, и что соответствует 2. Есть ли кто-нибудь, чтобы указать, что если между цифрами нет пробелов, то это один номер? Или просто общий способ читать цифры, а не отдельные цифры.Для каждого ... Следующая помощь VB.NET

Немного кода. Должен ли я использовать тип данных Char? Поскольку я предполагаю, что это то, что заставляет его конвертировать 1 цифру за раз. Хотя, когда я пробовал какие-либо другие типы данных, я получаю некоторую ошибку, поскольку это не тип коллекции.

Dim rtb As String 
    rtb = Rich.Text1 
    For Each num As Char In rtb 
     'Conversion stuff goes here 
    Next num 

ответ

1

Позволяет анализировать то, что происходит здесь:

For Each num As Char In rtb 

Поскольку rtb является String и String реализует IEnumerable<Char>, выше, по существу, вы говорите - для каждого символа в строке - что не то, что есть вы хотите.

Вы должны сначала разбить строку на группы, что каждый представляет собой число - например:

Dim numbers As String() = rtb.Split(" ") 

Тогда вы могли бы пройти по списку и преобразование каждому из строк (это еще строка) в фактическое число, которое вам нужно будет преобразовать в символ:

For Each num As String In numbers 
    ' num can be "82", for instance 
Next num 
0

ли что-то вроде этого:

Dim rtb As String = Nothing 
rtb = "82 40 30" 

For Each num As var In rtb.Split(" "C) 
Next 

Конечно, если вы хотите разделить числа, используя другой символ, просто замените «C» на то, что вам нужно

0

Вы не перебираете числа, вы повторяете отдельные символы. Вы не сказали нам, как цифры разделяются во входных данных, но для обсуждения предположим, что вы используете пробелы. Мы можем использовать String.Split, чтобы получить отдельные номера из потока:

Dim rtb As String = "82 23 47 123" 
Dim Ascii = System.Text.Encoding.ASCII 

For each numToken As String In rtb.Split(" "c) 
    Dim num As Byte 
    If Not Byte.TryParse(numToken, num) 
     ' Signal error 
     Exit For 
    End If 

    Dim buffer As Char() = Ascii.GetChars(New Byte() { num }) 
    Dim result As Char = buffer(0) 
    ' Do something with `result` 
Next 

Один важных биты: Я использовал System.Text.Encoding класс, чтобы сделать отображение между ASCII кодами и символами. Это может показаться излишне сложным, но делать хочу сделать это. Кодировки, к сожалению, являются комплексами, и это контрпродуктивно притворяться иначе и использовать самодельные конверсии ad hoc. В частности, использование Chr - это , а не, так как оно фактически не обрабатывает ASCII, оно обрабатывает коды кода Unicode (с некоторыми ограничениями), которые являются похожими, но не одинаковыми. Использование Chr в приведенном выше коде будет вводить в заблуждение и, таким образом, обеспечить верный способ введения ошибок в будущем. Важно документировать ваши предположения, и если ваше предположение состоит в том, что вход состоит из ASCII, тогда код конверсии должен отражать это.

0

Используйте три цифры для каждого символа. Большинство строчных букв в любом случае три цифры.

Смежные вопросы