|
|
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Господа, вот пример строки: str="Geologist - Development/Analysis / Геолог – Разработка месторождения /Анализ разработки" Как разделить ее на 2 части? Английскую и русскую? Какие мысли будут? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 14:52:23 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 15:11:41 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
я вот так сделал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 15:31:08 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
2Zalagaev с учетом написанного vkodor , как точно нужно разделить:(1) какие символы могут|должны попадать, (2) всегда ли строка из 4 частей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 15:34:15 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 16:32:43 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
количество частей строки не известно. всегдя меняется. как человеку в голову взбредет. Иногда пишут и / и \ | ~ -- А если будут немецкие буквы, то что делать - не знаю.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 17:18:30 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Zalagaevколичество частей строки не известно. всегдя меняется. как человеку в голову взбредет. Иногда пишут и / и \ | ~ -- А если будут немецкие буквы, то что делать - не знаю..тогда, конечно, лучше всего использовать и развивать предложение lena_#### ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 17:21:16 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
lena_#### Расшифруй, пожалуйста. Что значит "{0,}" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 17:37:47 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
vkodor {n,} – ищет не менее n раз повторенный предыдущий знак {n,} - n is a nonnegative integer. Matches at least n times. For example, "o{2,}" does not match the "o" in "Bob" and matches all the o's in "foooood". "o{1,}" is equivalent to "o+" "o{0,}" is equivalent to "o*". В моем случае ищется пробел (\s), который может быть перед слешем (/) а может и не быть. Т.е. и для строки "Analysis/Геолог" и для "Analysis /Геолог" и для "Analysis /Геолог" поиск окажется успешным. Учитывая приведенную мною цитату из help’а, в моем примере можно образец поиска записать в виде: Код: plaintext Если я чего-то недопонимаю - поправьте меня :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 18:11:17 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Zalagaev Вот вариант без использования функции Mid. Работает с разделителями англицкой и русской части: / \ | ~ -- (по крайней мере, с закомментированными в примере строками работает) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 20:18:07 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
lena_####Вот вариант без использования функции Mid. Работает с разделителями англицкой и русской части: / \ | ~ -- (по крайней мере, с закомментированными в примере строками работает)Во первых, слишком сложно. Во вторых, неверно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 22:00:31 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
White Owl Спасибо Вам за непрозвучавшую конструктивную критику. Свои ошибки, в том числе и критические, я увидела. Еще раз спасибо. Но вы уж слишком категоричны. У Вас, к слову сказать, тоже неверно. Прошено было распасить английскую и русскую части. Гляньте как парсится Вашим кодом строка: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2007, 23:17:46 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
lena_#### White Owl Спасибо Вам за непрозвучавшую конструктивную критику. Свои ошибки, в том числе и критические, я увидела. Еще раз спасибо. Но вы уж слишком категоричны. У Вас, к слову сказать, тоже неверно. Прошено было распасить английскую и русскую части. Гляньте как парсится Вашим кодом строка: Код: plaintext Ну тогда задача в общем случае через регулярные выражения не решается. Чтобы уверенно отличить начало русской части - надо найти в строке первый символ принадлежащий к кириллице, потом откатится чуть назад на случай что первое слово там начинатся цифр (например это маркировка транзистора). Поставить маркер начала русской части, потом откатится еще назад пропустить все знаки препинания которые могут быть использованы как разделитель. Через регулярные выражения это все конечно тоже можно сделать, но проблема в том, что регэкспы в Windows Scripting Host не умеет работать с восьмибитными символами в паттернах. Так что либо в цикле перебирать все буквы по алгоритму который я только что описал, либо приказать всем юзерам набирающим эту фигню ставить какой-нибудь общий для всех разделитель. Либо не маятся дурью и делать перевод сразу в две разные ячейки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 00:43:12 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
lena_#### vkodor {n,} – ищет не менее n раз повторенный предыдущий знак {n,} - n is a nonnegative integer. Matches at least n times. For example, "o{2,}" does not match the "o" in "Bob" and matches all the o's in "foooood". "o{1,}" is equivalent to "o+" "o{0,}" is equivalent to "o*". В моем случае ищется пробел (\s), который может быть перед слешем (/) а может и не быть. Т.е. и для строки "Analysis/Геолог" и для "Analysis /Геолог" и для "Analysis /Геолог" поиск окажется успешным. Учитывая приведенную мною цитату из help’а, в моем примере можно образец поиска записать в виде: Код: plaintext Если я чего-то недопонимаю - поправьте меня :) Спасибо понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 10:21:59 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
vkodor Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ооуу, мне уже подражают, спасибо-спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:30:16 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
White Owl lena_#### White Owl Спасибо Вам за непрозвучавшую конструктивную критику. Свои ошибки, в том числе и критические, я увидела. Еще раз спасибо. Но вы уж слишком категоричны. У Вас, к слову сказать, тоже неверно. Прошено было распасить английскую и русскую части. Гляньте как парсится Вашим кодом строка: Код: plaintext Ну тогда задача в общем случае через регулярные выражения не решается. Чтобы уверенно отличить начало русской части - надо найти в строке первый символ принадлежащий к кириллице, потом откатится чуть назад на случай что первое слово там начинатся цифр (например это маркировка транзистора). Поставить маркер начала русской части, потом откатится еще назад пропустить все знаки препинания которые могут быть использованы как разделитель. Через регулярные выражения это все конечно тоже можно сделать, но проблема в том, что регэкспы в Windows Scripting Host не умеет работать с восьмибитными символами в паттернах. Так что либо в цикле перебирать все буквы по алгоритму который я только что описал, либо приказать всем юзерам набирающим эту фигню ставить какой-нибудь общий для всех разделитель. Либо не маятся дурью и делать перевод сразу в две разные ячейки. можно мысль, по-моему vkodor используя мою идею предложил верную мысль, но не до конца, видать так же не дочитал топик, вроде – да, нужно каждую букву перебрать, выяснить её пренадлежность к кириллице и с неё вырезать части, и вся маятня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:37:06 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
Программист Дёня vkodor Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ооуу, мне уже подражают, спасибо-спасибо! Не обольщайся. Почитай. String в Double этот способ известен давно, я лишь с твоего топика скопировал данные, дабы самому не писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 18:00:26 |
|
||
|
VBA - Парсинг строк
|
|||
|---|---|---|---|
|
#18+
vkodor Программист Дёня vkodor Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ооуу, мне уже подражают, спасибо-спасибо! Не обольщайся. Почитай. String в Double этот способ известен давно, я лишь с твоего топика скопировал данные, дабы самому не писать ладно ладно, если Лев сердиться, значит он неправ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 18:07:03 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34403822&tid=2183270]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 342ms |

| 0 / 0 |
