powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вырезать часть строки
7 сообщений из 7, страница 1 из 1
вырезать часть строки
    #38211218
Saules
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня,
есть 10 правильных вариантов, какие могут быть названия файлов
например:
01000732038001_ 20080410 _OP_P11.dgn
01000480030001002_ 20110609 _EGY.dgn
01000480040001006_ 20060403 _EGYS.dgn
01000482013001_ 20070302 _BAGS.dgn
01000482021_ 20070410 _BTS.dgn
01000510145001_ 20101203 _SZ_1.dgn
01000510145001_ 20101203 _SZ_99.dgn
01000510145_ 20101203 _UP.dgn
01000990084001_ 20111018 _EK_2.JPG
01000990084881_ 20111018 _EK_99.JPG
01000992360001_ 20120111 _IL_1.jpg
01000992360001_ 20120111 _IL_11.jpg

середина - это дата в формате ”yyyymmdd”
как вырезать из строки только эту часть и проверить на правильность формата даты?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Function GetFilename(ByVal sFileName As String) As String
  Dim lngLen As Long
   Dim sFName, sFName1, Last As String
   
Dim i, j As Integer
sFName1 = Left(sFileName, InStrRev(sFileName, ".") - 1)
Debug.Print sFName1

i = InStrRev(sFName1, "_")
If i > 0 Then
sFName = Left(sFName1, i - 1)
Debug.Print sFName
End If

j = InStrRev(sFName, "_")
If j > 0 Then
Last = Left(sFName, j - 1)
Debug.Print "Last = " & Last
End If

End Function



на данный момент не получается сделать ее универсальной для всех вариантов, а если точнее, то не получается вырезать дату. левую часть, до первого "_" получается, а остальное нет.
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211240
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасут регулярные выражения.

\d+_(\d{6})_

В принципе можно вырезать ее сразу в формате dd.mm.yyyy, а потом проверить на валидность. Или заложить валидность в регулярку, но если не валидируется, то результата не будет.
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211244
запуск
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Saules,

Код: vbnet
1.
2.
3.
dim s() as string
s=split("01000732038001_20080410_OP_P11.dgn","_")
msgbox s(1)



как то так
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211248
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
i = InStr(1, sFileName, "_")
Debug.Print Mid$(sFileName, i + 1, InStr(i + 1, sFileName, "_") - i - 1)
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211252
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
три ответа сразу )))
впрочем, ответ Запуска мне нравится больше моего )
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211290
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и я что ли кодом разрожусь...

Код: vbnet
1.
2.
3.
4.
5.
Set rx = CreateObject("VBScript.RegExp")
rx.Pattern = "(\d+_)(\d{4})(\d\d)(\d\d)(_.*)"
Debug.Print rx.Replace("01000732038001_20080410_OP_P11.dgn", "$4.$3.$2")

'10.04.2008



Shocker.Proвпрочем, ответ Запуска мне нравится больше моего )Твой вариант шустрее.
...
Рейтинг: 0 / 0
вырезать часть строки
    #38211447
Saules
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
оо! спасибо! у меня тоже получилось, но очень криво и громоздко
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / вырезать часть строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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