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


По пробелу?
Что делать если имя файла содержит пробел?
Сплит разобьет на 5 столбцов, а надо на 4: file name в первом столбце, а все остальное вследующих.
...
Рейтинг: 0 / 0
01.02.2017, 13:49
    #39396333
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
На vb6.0 это сделать бы
...
Рейтинг: 0 / 0
01.02.2017, 13:59
    #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
01.02.2017, 14:11
    #39396350
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
AkinaПрограммненько - отдели 3 последних элемента после сплита, остальное сджойни обратно.
Хотя я бы сделал универсальную функцию...
Вот вот. Универсальное было бы в тему.
Просто бывает не 3, а 4 например.
И количество пробелов в имени файлов бывает разное.
И ещё, какую проверку добавить есть ли в имени пробелы?
...
Рейтинг: 0 / 0
01.02.2017, 14:39
    #39396380
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
BlackeAngelколичество пробелов в имени файлов бывает разное.Приведённому коду по барабану.

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

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


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


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

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

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


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

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

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

и вперед с песней
...
Рейтинг: 0 / 0
01.02.2017, 19:04
    #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
01.02.2017, 19:08
    #39396683
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
Shocker.Proесть пять колонок
Нет их, есть только строка. Их то как раз и надо получить.
...
Рейтинг: 0 / 0
01.02.2017, 19:29
    #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
01.02.2017, 19:45
    #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
01.02.2017, 19:47
    #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
01.02.2017, 19:52
    #39396721
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
вот так будет правильнее
Код: vbnet
1.
re.Pattern = "^(.*) (\d+) (\d+) (\d+) (.*)$"
...
Рейтинг: 0 / 0
01.02.2017, 20:17
    #39396736
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробел в имени файла
Shocker.Pro,

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

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

Так к тому что там присутствуют все варианты что я спрашивал, поэтому нужен либо универсальный код, либо проверка на тот или иной шаблон.
...
Рейтинг: 0 / 0
02.02.2017, 10:51
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пробел в имени файла / 25 сообщений из 58, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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