powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка строки
11 сообщений из 11, страница 1 из 1
Обработка строки
    #37234389
Игорь86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Подскажите, как сделать следующее?

Имеется несколько строк такого плана:

Тест-тест-тест тест тест
Тест тест тест-тест
Тест тест-тест тест
Тест тест-тест-тест
Тест тест тест-тест-тест

Нужно из них сделать следующее:
Тест-Тест-Тест Тест Тест
Тест Тест Тест-Тест
Тест Тест-Тест Тест
Тест Тест-Тест-Тест
Тест Тест Тест-Тест-Тест

Подскажите, как это сделать?
...
Рейтинг: 0 / 0
Обработка строки
    #37234455
basicv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь86,

Microsoft дает подсказку: How To Capitalize the First Letter of Each Word in a String
.
...
Рейтинг: 0 / 0
Обработка строки
    #37234471
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь86Подскажите, как это сделать?
Код: plaintext
=Replace(Str, "тест", "Тест")
...
Рейтинг: 0 / 0
Обработка строки
    #37234489
Игорь86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИгорь86Подскажите, как это сделать?
Код: plaintext
=Replace(Str, "тест", "Тест")


Так не пойдет. Слово тест я просто написал. Там могут быть всевозможные слова.

basicvИгорь86,

Microsoft дает подсказку: How To Capitalize the First Letter of Each Word in a String
.

Спасибо, почитаю...
...
Рейтинг: 0 / 0
Обработка строки
    #37234503
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь86Так не пойдет. Слово тест я просто написал. Там могут быть всевозможные слова.

хорошо, а разделители слов только пробел и минус?
или тоже "просто так написал"?

И вообще, о какой среде речь идет? Если ворд, то действительно можно использовать штатные средства.
...
Рейтинг: 0 / 0
Обработка строки
    #37234563
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proхорошо, а разделители слов только пробел и минус?
ну вот, короче, для пробела, второй раз можно прогнать для минуса
вариант не оптимальный по скорости при больших объемах, но простой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Command1_Click()

Dim k() As String
Dim Str As String, StrOut As String, i As Integer
Str = "Тест тест тест-тест"

k = Split(Str, " ")
For i =  0  To UBound(k)
  StrOut = StrOut + " " + UCase(Left$(k(i),  1 )) + Mid$(k(i),  2 )
Next
MsgBox Mid$(StrOut,  2 )

End Sub
...
Рейтинг: 0 / 0
Обработка строки
    #37234641
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может так пойдёт
как вариант регулярное выражение


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Form_Load()
Dim re1 

sTEXT = "test-Test-Test test test" & vbCrLf & _
              "test-Test-Test test test" & vbCrLf & _
              "test-Test-Test test test" & vbCrLf & _
              "test-Test-Test test test" & vbCrLf & _
              "test-Test-Test test test"

Set re1 = CreateObject("vbscript.regexp")
re1.Global = True
re1.IgnoreCase = True
re1.MultiLine = True
re1.Pattern = "\b(\w)\w+"
Set obj = re1.Execute(sTEXT)
For Each o1 In obj
   i = o1.FirstIndex +  1 
   x = o1.SubMatches( 0 )
   Mid(sTEXT, i,  1 ) = UCase(x)
Next
end Sub
...
Рейтинг: 0 / 0
Обработка строки
    #37234864
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так даже лучше
в цикле всего 15 итераций вместо 25
выбирают только строки для цикла где слово начинается с маленькой буквы
слово это то что разделяется всеми знаками препинания и переходами кроме знака "_"
буквы английские и русские

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub Form_Load()
Dim re1, sTEXT, obj, o1

sTEXT = "test-Test-Test test, test" & vbCrLf & _
            "test-Test-Test test; test" & vbCrLf & _
            "test-Test-Test test! test" & vbCrLf & _
            "test-Test-Test test: test" & vbCrLf & _
            "test-Test-Test test notest"

Set re1 = CreateObject("vbscript.regexp")
re1.Global = True
're1.IgnoreCase = True
re1.MultiLine = True
re1.Pattern = "\b([a-zа-я])\w+"
Set obj = re1.Execute(sTEXT)
For Each o1 In obj
   Mid(sTEXT, o1.FirstIndex +  1 ,  1 ) = UCase(o1.SubMatches( 0 ))
Next
Set obj = Nothing
Set o1 = Nothing
Set re1 = Nothing
end Sub
...
Рейтинг: 0 / 0
Обработка строки
    #37234942
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael R...буквы английские и русские
...VBScript.RegExp не во всех случаях правильно обрабатывает нелатинницу :(
проверял в VBA Office 11
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Function simpleRE$()
Dim re1, sTEXT, obj, o1

sTEXT = "test-Test-Test test, test" & vbCrLf & _
            "test-Test-Test test; test" & vbCrLf & _
            "яest-Test-цest test! test" & vbCrLf & _
            "test-Test-Test фest: test" & vbCrLf & _
            "test-Test-Test test notest"

Set re1 = CreateObject("vbscript.regexp")
re1.Global = True
're1.IgnoreCase = True
re1.MultiLine = True
re1.Pattern = "\b([a-zа-я])\w+"
Set obj = re1.Execute(sTEXT)
For Each o1 In obj
   Mid(sTEXT, o1.FirstIndex +  1 ,  1 ) = UCase(o1.SubMatches( 0 ))
Next
Set obj = Nothing
Set o1 = Nothing
Set re1 = Nothing
simpleRE = sTEXT
End Function
Код: plaintext
1.
2.
3.
4.
5.
?simpleRE
Test-Test-Test Test, Test
Test-Test-Test Test; Test
яEst-Test-цEst Test! Test
Test-Test-Test фEst: Test
Test-Test-Test Test Notest
ЗЫ: буквы я,ц,ф выбрал не потому, что они какие-то особеные, а потому что "с первого взгляда нелатинница".
...
Рейтинг: 0 / 0
Обработка строки
    #37234947
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а если полный перебор русских букв ?
может проблема именно с UCase() ?
...
Рейтинг: 0 / 0
Обработка строки
    #37234949
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
michael Rну а если полный перебор русских букв ?тогда не получитсяmichael Rв цикле всего 15 итераций вместо 25
Проблема не в UCase(). Проблема в VBScript.RegExp.
ЗЫ: Никак не могу найти ссылку, народ исследовал, какие из метасимволов RegExp неправильно обрабатывает в совокупности с кириллицей "нелатинницей".
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Обработка строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]