powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пробел в имени файла
25 сообщений из 58, страница 1 из 3
Пробел в имени файла
    #39396332
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Как разбить на колонки строку
Код: sql
1.
File name 0 0 755


По пробелу?
Что делать если имя файла содержит пробел?
Сплит разобьет на 5 столбцов, а надо на 4: file name в первом столбце, а все остальное вследующих.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396333
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На vb6.0 это сделать бы
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396337
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программненько - отдели 3 последних элемента после сплита, остальное сджойни обратно. Ну скажем так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
data = "File name 0 0 755"
arr = split(data)
dim result(3)
for i = 1 to 3
  result(i) = arr(ubound(arr)+i-3)
next
redim preserve arr(ubound(arr)-3)
result(0) = join(arr)


Хотя я бы сделал универсальную функцию...
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396350
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaПрограммненько - отдели 3 последних элемента после сплита, остальное сджойни обратно.
Хотя я бы сделал универсальную функцию...
Вот вот. Универсальное было бы в тему.
Просто бывает не 3, а 4 например.
И количество пробелов в имени файлов бывает разное.
И ещё, какую проверку добавить есть ли в имени пробелы?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396380
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelколичество пробелов в имени файлов бывает разное.Приведённому коду по барабану.

BlackeAngelкакую проверку добавить есть ли в имени пробелы?Нахрена?

BlackeAngelУниверсальное было бы в тему.Пиши, какие сложности?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396395
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,


а если встречается и 3 и 4 и 5 с конца строки? Например.
system/box/book for children 0 0 644 /books/for people
На выходе должно быть 5 столбцов.
Как тут?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396407
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,


Akina,
Проверка нужна для того чтобы не гонять цикл лишний раз. Итак получается цикл в цикле в цикле.
ТК я сначала читаю файл в одну строку, потом бью ее на строки по каретке, потом начинаю перебирать эти строки и делить на столбцы. Но в этих строках по разному, то 5 столбцов то 4 получается. А ТК есть пробелы то все, мол за пределами массива
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396410
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelsystem/box/book for children 0 0 644 /books/for people
На выходе должно быть 5 столбцов.
Не понял... поясни, почему 5.

Или даже не так. Сформулируй правило, по которому можно однозначно идентифицировать, где делить на элементы.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396439
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
5 колонок:
1 system/box/book for children
2 0
3 0
4 644
5 /books/for people

На счет правила. Типа в середине есть цифры с пробелами. Опять же цифры не определены. Все что справа или слева это отдельные столбцы.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396460
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelНа счет правила. Типа в середине есть цифры с пробелами. Опять же цифры не определены. Все что справа или слева это отдельные столбцы.тут лучше и проще регуляркой тогда.


BlackeAngelцифры не определеныкак это не определены? цифр всего десять (у вас в примере вроде арабские цифры)
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396475
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

А сколько комбинаций? 5 форов?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396543
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelв середине есть цифры с пробеламиА в именах файлов их гарантированно нет? тогда после сплита проверяй, в каких элементах массива значения могут интерпретироваться как числа.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396655
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackeAngelShocker.Pro,

А сколько комбинаций? 5 форов?да какая разница? есть пять колонок, в средних могут быть только комбинации цифр.
Код: plaintext
"(.*) (\d+) (\d+) (\d+) .*"

и вперед с песней
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396681
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: plaintext
"(.*) (\d+) (\d+) (\d+) .*"


и вперед с песней
5 колонок:
1 system/box/book vol. 1
2 0
3 0
4 644
5 /books/for people
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396683
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proесть пять колонок
Нет их, есть только строка. Их то как раз и надо получить.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396702
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сработает или хз?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
for i=48 to 57
for j=48 to 57
for k=48 to 57
for l=48 to 57
for m=48 to 57
Arr=replace(1," "&chr(i)&" "&chr(j)&" "&chr(k)&chr(l)&chr(m),vbTab&chr(i)&vbTab&chr(j)&vbTab&chr(k)&chr(l)&chr(m))
Next
Next
Next
Next
Next
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396712
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не забудь подключить Microsoft RegularExpressions
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim re As New RegExp, result As MatchCollection, i As Integer
re.Pattern = "(.*) (\d+) (\d+) (\d+) (.*)"
Set result = re.Execute("xx uyu oi 87 0 800 uyu iooo")

For i = 0 To 4
  Debug.Print result(0).SubMatches(i)
Next
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396714
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proне забудь подключить Microsoft RegularExpressionsну или поздним связыванием
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim re As Object, result As Object, i As Integer
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "(.*) (\d+) (\d+) (\d+) (.*)"
Set result = re.Execute("xx uyu oi 87 0 800 uyu iooo")

For i = 0 To 4
  Debug.Print result(0).SubMatches(i)
Next
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396721
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так будет правильнее
Код: vbnet
1.
re.Pattern = "^(.*) (\d+) (\d+) (\d+) (.*)$"
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396736
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

А теперь вернемся к проверке.
Если в строке имя файла не содержит пробелы
Типа
system/bin/marr 0 0 550
Ваш код не заткнется? Нормально отработает? Разобьет на 4 столбца?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396755
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если после 550 нет пробела, то заткнется
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396764
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proесли после 550 нет пробела, то заткнется
То есть, все таки надо проверку. Какую? На проверку кол-ва пробелов?
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396768
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем? Просто переписать регулярное выражение.
Только вы СНАЧАЛА определитесь со ВСЕМИ возможными обрабатываемыми вариантами, а то у вас техзадание раз пять уже поменялось, совсем нет желания переделывать решение сто раз.

Ну или почитайте про регулярные выражения. В вашем случае они довольно простые и всегда в жизни пригодятся.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39396799
BlackeAngel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Так к тому что там присутствуют все варианты что я спрашивал, поэтому нужен либо универсальный код, либо проверка на тот или иной шаблон.
...
Рейтинг: 0 / 0
Пробел в имени файла
    #39397040
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регулярки в VBScript почему-то не поддерживают "просмотр назад". Поэтому получилось чуть сложнее:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim re As Object, result As Object, i As Integer
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "^(.*) (\d+) (\d+) (\d+)( ?(.*))?$"
Set result = re.Execute("system/app/MetokNLP/lib/arm64/liblocSDK 2 5OEMXXX.so 0 0 644")

Debug.Print result(0).SubMatches(0)
Debug.Print result(0).SubMatches(1)
Debug.Print result(0).SubMatches(2)
Debug.Print result(0).SubMatches(3)
Debug.Print result(0).SubMatches(5)
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пробел в имени файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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