Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 12:32   #1
KatruKot
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 31
По умолчанию Работа со строками

Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.
Подскажите, пожалуйста.
Код:
Dim text, a, z As String
text = InputBox("Введите строку")
a = Split(text, " ")
z = 0
For i = 0 To UBound(a)
z = 0
For j = 0 To UBound(a)
If a(i) = a(j) And i <> j Then z = z + 1
If z = 0 Then MsgBox " " & a(i)
Next j
Next i
KatruKot вне форума Ответить с цитированием
Старый 19.02.2012, 03:10   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Вот та же тема (незавершённая): http://programmersforum.ru/showthread.php?t=144035
Sasha_Smirnov вне форума Ответить с цитированием
Старый 19.02.2012, 04:48   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

По-моему, можно обойтись без массивов и сплитов, даже тема так названа! Сравнение производится без учёта регистра. Ну и кроме того, будут считаться не только буквы, но и знаки препинания, но их потом можно удалить из результирующей строки
Код:
Sub test()
'Исходная и результирующие строки
Dim sText, sOutput As String
'Текущая буква
Dim sLetter As String
sText = "Съешь ещё этих мягких булок да выпей же чаю"
Do While Len(sText) > 1
  sLetter = Mid(sText, 1, 1)
  'Если при удалении буквы длина строки сокращается на единицу,
  'значит такая буква в строке одна. Добавляем её в результирующую строку
  If Len(Replace(sText, sLetter, "", Compare:=vbTextCompare)) = Len(sText) - 1 Then
    sOutput = sOutput & sLetter
  End If
  sText = Replace(sText, sLetter, "", Compare:=vbTextCompare)
Loop
 sOutput = sOutput & sText
 Debug.Print """" & sOutput & """: " & Len(sOutput)
End Sub
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 19.02.2012 в 05:30.
viter.alex вне форума Ответить с цитированием
Старый 19.02.2012, 09:34   #4
KatruKot
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 31
Радость

Так привык к С#, там можно было посимвольно сравнивать... Спасибо вам огромное.
KatruKot вне форума Ответить с цитированием
Старый 19.02.2012, 15:49   #5
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Расширение для обычного текста

С помощью двух замен в программе Viter.Alex:
Код:
sText = ActiveDocument.Content.Text '"Съешь ещё этих мягких булок да выпей же чаю"
Код:
' Debug.Print """" & sOutput & """: " & Len(sOutput)
ActiveDocument.Content.Text = sOutput
получил из неё такой вот текст: ъшэгйжW>ц-

Чтобы хоть к чему-то придраться, спрошу: а с чего это пробел вообще «уволен» из символов?
Sasha_Smirnov вне форума Ответить с цитированием
Старый 19.02.2012, 23:34   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

По-моему, в макросе никакой дискриминации по символам нет. Если пробел один, то должен сохраниться.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 20.02.2012, 02:09   #7
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

"Съшьщё этмягбулодвыпйжчю": 24

А, да, один вывелся! Когда было больше одного — все съелись.
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками stas135642 Общие вопросы C/C++ 1 06.12.2010 02:03
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками FunnyDev1l Помощь студентам 4 19.05.2010 08:30
Работа со строками gani84 Помощь студентам 1 30.03.2010 17:39
Работа со строками Дырдин Общие вопросы C/C++ 12 24.10.2009 19:47