Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для olusik27
90 / 20 / 2
Регистрация: 28.02.2011
Сообщений: 54

Извлечение нужного символа из строки

28.02.2011, 14:40. Показов 1952. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как можно из строки вида "354327U698494" извлечь символ, находящийся в середине, т.е. "U". Количество цифр до символа и после него заранее не известно, да и сам символ точно не известен. Знаем только, что в этой строке он один, латинского алфавита, верхний регистр. Конечно, можно пустить цикл по строке и проверять каждый символ, но может есть какое-то более красивое решение? Например, чтобы ограничиться использованием только стандартных функций. Всем заранее спасибо!

Добавлено через 2 часа 37 минут
Я пока смогла придумать такой вариант:
Visual Basic
1
2
3
4
Dim MyStr As String
 
MyStr="1234U5678"
MyStr=Mid(MyStr, Len(CStr(Val(MyStr))) + 1, 1)
Но может у кого появилась получше идея?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.02.2011, 14:40
Ответы с готовыми решениями:

Извлечение нужного символа из строки
как извлечь из номера телефона пр 89053212345 извлечь 905?

Извлечение времени из текста и подстановка в ячейки напротив нужного значения
Добрый день. Есть вопрос с подковыркой. Не знаю, возможно ли это? Есть на листе 2 таблицы. В левой таблице ввод информации для...

Читать до нужного символа
Нужно сделать так: if (edit1.Text='Plus *3* and *5*') then begin showmessage('fdg'); end т.е. plus - это обизательно в edit, а вот...

6
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
28.02.2011, 18:20
Достойное решение! Всё остальное перебором только.
0
 Аватар для olusik27
90 / 20 / 2
Регистрация: 28.02.2011
Сообщений: 54
28.02.2011, 22:15  [ТС]
спасибо
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
28.02.2011, 23:14
понятно, что случай MyStr="U" можно исключить
этот вариант не работает в данной ситуации
Visual Basic
1
Mid(MyStr, LEN(CStr(VAL(MyStr))) + 1, 1)
вот так работает
Visual Basic
1
Mid(MyStr, Len(CStr(MyStr)) \ 2 + 1, 1)
0
 Аватар для olusik27
90 / 20 / 2
Регистрация: 28.02.2011
Сообщений: 54
01.03.2011, 09:10  [ТС]
Спасибо, gaw, за ответ. Да, мой вариант не учитывает случай, когда строка состоит только из искомого символа, но в моей задаче такой вариант невозможен: эта строка - уникальный ключ для элемента, который состоит из 3-х частей: 1) индекс массива; 2)состояние, обозначаемое буквой латинского алфавита (которое мы и ищем в данном случае); 3) индекс другого массива. Поэтому цифры будут всегда!
Однако твой вариант, как ты наверное уже понял, не будет во всех случаях работать верно. Я не сказала, но число цифр до символа не равно числу цифр после символа (в примере это как-то случайно получилось). В этом случае код работает неверно. А чаще так и будет: первый массив содержит тысячи, а то и десятки тысяч элементов, а второй - маленький подмассив, элементов в котором не более 10.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
01.03.2011, 11:16
так это в корне меняет вопрос
я просто прочитал
Цитата Сообщение от olusik27 Посмотреть сообщение
находящийся в середине
0
16 / 16 / 1
Регистрация: 08.03.2011
Сообщений: 37
17.03.2011, 20:41
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim MyStr As String
Dim Pos As Long
 
Dim Index1 As String
Dim Status As String
Dim Index2 As String
 
MyStr = "12345678901234U1235"
 
Pos = 1
 
Do
    If Not IsNumeric(Mid$(MyStr, Pos, 1)) Then
        Index1 = Mid$(MyStr, 1, Pos - 1)
        Status = Mid$(MyStr, Pos, 1)
        Index2 = Mid$(MyStr, Pos + 1)
        Exit Do
    End If
    Pos = Pos + 1
Loop
 
MsgBox "Массив 1: " & Index1 & vbCrLf & "Состояние: " & Status & vbCrLf & "Массив 2: " & Index2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2011, 20:41
Помогаю со студенческими работами здесь

Извлечение чисел из строки (частичное извлечение)
Добрый день! Прошу помочь облегчить жизнь работяге офисного планктона (т.е. мне) :D Неотъемлемой частью моей работы является...

Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку
Нужно составить программу, в которой пользователь вводит вручную строку S и символ C. Результатом программы должно быть число повторений...

Как считать текст до нужного символа?
Код void Obrabotka() { ofstream out_file("out.txt"); file.open("text.txt"); char c; while(!file.eof()) { ...

Выделить красным цветом в строке искомые вхождения нужного символа
Вводится строка и искомый символ в строке. Выделить красным цветом в этой строке искомые вхождения нужного символа.

Извлечение любого символа из имени файла
Есть папка со множеством файлов вида D10A2412.rtf Задача отсортировать файлы по папкам с такой иерархией А => 2000 => 400 => 10 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru