Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Работа со строками Добавлено: 14.01.10 13:47  

Автор вопроса:  V1RR | Web-сайт: V1RR.us | ICQ: 636580 
Нужно заключить все числа в текстовом поле в такие скобоки: <> а также удалить из этой же строки все большие буквы.

Никак не могу понять уже гуглил 100 раз я так понял что надо через оператор Like проверять строку и функцией IsNumeric на цифры, но все никак не могу понять как его сделать - не выходит.
Помогите пожалуйста.

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 14.01.10 13:50
Я бы сделал проход циклом по строке, если встретилась цифра, то ставим перед ней "<", и выставляем какой-нибудь флаг, типа digit=true.
Продолжаем проход, если встретилась не цифра и при этом digit=true, то ставим перед ">".
Вот как я бы сделал, если бы делал.

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 14.01.10 14:57
  1. Function Coo(s As String) As String
  2. Dim h As String
  3. Dim i As Long
  4. For i = 1 To Len(s)
  5. If IsNumeric(Mid$(s, i, 1)) Then
  6. h = h & "<" & Mid$(s, i, 1) & ">"
  7. ElseIf Asc(Mid$(s, i, 1)) < Asc("&#192;") Or Asc(Mid$(s, i, 1)) > Asc("&#223;") Then
  8. h = h & Mid$(s, i, 1)
  9. End If
  10. Next
  11. Coo = Replace(h, "><", "")
  12. End Function

Ответить

Номер ответа: 3
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #3
Добавлено: 14.01.10 15:27
Извините за нубский вопрос но как ее вызвать правильно :)
Поле, которое проверятеся Text1
Ставлю обработку по нажанию кнопки.
  1. Private Sub cmdConvert_Click()
  2.     Coo (Text1.Text)
  3. End Sub


Что я не так делаю?

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 14.01.10 15:39
  1. Private Function EncaseNumbers(ByRef sNumbers As String) As String
  2.     Dim i As Long, number As Boolean, char As String, length As Long
  3.     length = Len(sNumbers)
  4.     For i = 1 To length
  5.         char = Mid$(sNumbers, i, 1)
  6.         If IsNumeric(char) And Not number Then
  7.             EncaseNumbers = EncaseNumbers & "<" & char
  8.             number = True
  9.         ElseIf Not IsNumeric(char) And number Then
  10.             EncaseNumbers = EncaseNumbers & ">" & char
  11.             number = False
  12.         Else
  13.             EncaseNumbers = EncaseNumbers & char
  14.         End If
  15.         If i = length And number Then _
  16.             EncaseNumbers = EncaseNumbers & ">"
  17.     Next i
  18. End Function

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 14.01.10 15:45
VBD, ты в курсе, что Asc("&#192;";) возвращает анси-код символа "&"? ты все эти символы удаляешь)

Ответить

Номер ответа: 6
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #6
Добавлено: 14.01.10 15:45
Как вызвать-то? :(
  1. Private Sub cmdConvert_Click()
  2.     EncaseNumbers (Text1.text)
  3. End Sub

Не работает. Как правильно?

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 14.01.10 15:47
ёмаё! Text1.text = EncaseNumbers(Text1.text)
Общие принципы программирования стоит подучить

Ответить

Номер ответа: 8
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #8
Добавлено: 14.01.10 15:50
Оо спасибо большое :) А по 2 части вопроса кто поможет? :)

Надо удалить из строки все большие буквы и подсчитать сколько их было удалено?

Ответить

Номер ответа: 9
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #9
Добавлено: 14.01.10 16:04
Ах так вот, что VBD хотел сделать) форум просто заменил русские буквы
Этот пример выводит в заголовок окна количество удаленных букв: Caption = deleted. Думаю сойдёт.
  1. Private Function EncaseNumbers(ByRef sNumbers As String) As String
  2.     Dim i As Long, number As Boolean, char As String, length As Long, deleted As Long
  3.     length = Len(sNumbers)
  4.     For i = 1 To length
  5.         char = Mid$(sNumbers, i, 1)
  6.         If IsNumeric(char) And Not number Then
  7.             EncaseNumbers = EncaseNumbers & "<" & char
  8.             number = True
  9.         ElseIf Not IsNumeric(char) And number Then
  10.             EncaseNumbers = EncaseNumbers & ">" & char
  11.             number = False
  12.         ElseIf char < "A" Or (char > "Z" And char < "А") Or char > "Я" Then
  13.             EncaseNumbers = EncaseNumbers & char
  14.         Else
  15.             deleted = deleted + 1
  16.         End If
  17.         If i = length And number Then _
  18.             EncaseNumbers = EncaseNumbers & ">"
  19.     Next i
  20.     Caption = deleted
  21. End Function

Ответить

Номер ответа: 10
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #10
Добавлено: 14.01.10 16:14
Всем респект за ответы!
Все работает, спасибо!

Ответить

Номер ответа: 11
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #11
Добавлено: 14.01.10 16:44
Гребаный кодировка!
  1. Function Coo(s As String) As String
  2. Dim h As String
  3. Dim i As Long
  4. For i = 1 To Len(s)
  5. If IsNumeric(Mid$(s, i, 1)) Then
  6. h = h & "<" & Mid$(s, i, 1) & ">"
  7. ElseIf Asc(Mid$(s, i, 1)) < Asc("А") Or Asc(Mid$(s, i, 1)) > Asc("Я") Then
  8. h = h & Mid$(s, i, 1)
  9. End If
  10. Next
  11. Coo = Replace(h, "><", "")
  12. End Function

Вот:
  1.  
  2. Text1.Text = Coo(Text1.Text)

Ответить

Номер ответа: 12
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #12
Добавлено: 14.01.10 16:52
Задам тоже вопрос в этой теме) подскажите плиз как лучше поменять местами случайным способом все символы в переменной типа String.VB6, Заранее благодарен

Ответить

Номер ответа: 13
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #13
Добавлено: 14.01.10 17:59
  1.  
  2. Function Boo(s As String) As String
  3. Dim h As String, r As String
  4. h = s
  5. Randomize
  6. dim i as long
  7. do while h <> ""
  8. i = int(Rnd * len(h))+1
  9. r = r & mid(h, i, 1)
  10. h = mid(h, 1, i-1) & mid(h, i+1)
  11. loop
  12. Boo = r
  13. End Function

Ответить

Номер ответа: 14
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #14
Добавлено: 14.01.10 18:02
Благодарю)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам