Мне нужна помощь в преобразовании любого заданного числа, например «0123456789», присутствующего в TextBox, чтобы преобразовать его в строку типа «Zero One Two Three Four Five Six Seven Eight Nine» и распечатать в VB.Net.
Также прочтите При каких обстоятельствах я могу добавить к моему вопросу «срочно» или другие похожие фразы, чтобы получить более быстрые ответы?


Почему бы не сделать функцию, которая читает до конца и для каждого целого числа не выполняет преобразование с таблицей как 1 -> One; 2 -> Два и т.д.?
как
Dim something as somewhat control that can carry text
Dim converted as other somewhat control that also can carry text
for each char in something.text
if char = ("1") then
converted.text = converted.text & ("one")
elseif char = ("2")
converted.text = converted.text & ("two")
elseif
...
извините за мой плохой английский, надеюсь, вы видите мою идею с какой-то быстрой, грязной и беспорядочной идеей из ниоткуда от моей задницы
Поместите имена чисел в массив, затем используйте результат Integer.Parse(c.ToString()) (или даже Cint() здесь) в цикле for each, чтобы выбрать имя из массива. StringBuider лучше конкатенации строк. Или LINQ в одну строку.
@Jimi Вау, мне нравится твоя идея
Как предложил Джими, вы можете сделать что-то вроде этого
Dim wordsarray As String() = {"Zero", "One", "Two", " Three" , "Four", "Five", "Six", "Seven", "Eight", "Nine"}
Dim result As String = ""
For each c As Char In TextBox1.Text
result &= wordsarray(Integer.Parse(c)) & " "
Next
'The string is now stored in the result variable and you can do something like this
Msgbox(result)
При этом вы должны убедиться, что значение текстового поля - это только целые числа.
@Jimi Спасибо, я отредактировал ответ, можно ли его еще отредактировать?
Да! Dim numarray As Char() и т.п. не нужен. Как описано ранее, строка уже является массивом Char: вы можете просто иметь For each c As Char In Textbox1.Text. Другая линия идет. Если вы считаете, что его нужно обрезать, добавьте TextBox1.Text.Trim().
мое решение
Function NumberToText1(ByVal n As Integer) As String ' numeri da 0 a 9
Dim arr() As String = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven",
"Eight", "Nine"}
Return arr(n) & " "
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim w As String = ""
For Each s As String In TextBox1.Text
w += NumberToText1(CInt(s))
Next
MessageBox.Show(w)
End Sub
For Each s As String In TextBox1.Text Я не думаю, что это правильно, потому что в текстовом поле только одна строка.
0,02 доллара США
Private Function NumberDigitsToText(Num As Integer) As String
Dim rv As String = ""
Dim words() As String = {"Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine "}
rv = String.Join("", (From c In Num.ToString
Select words(Integer.Parse(c))))
Return rv
End Function
dbasnett спасибо за вас Решение Это сработало, мне также нужен тот же код для vb6
Добро пожаловать в Stack Overflow. Пожалуйста, прочтите страницы помощи, особенно "Какие темы я могу спросить здесь?" и «Какие типы вопросов мне следует избегать?». Также взять тур и читай о том, как задавать хорошие вопросы и этот контрольный список вопросов. Наконец, узнайте, как создать минимальный воспроизводимый пример.