|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые форумчане. Исходные данные передаются в виде таблицы в MS Word (в наличии объединённые ячейки, заполнение вручную, которое приводит к проблемам в виде забытых или лишних пробелов, и.т.д) Одно из полей таблицы "Persons" содержит в каждой ячейке некий текст. (в тексте есть ФИО и может также попадать организация, должность, сроки, и.т.д., а может не попадать, в общем, полный хаос) ФИО может Быть как в формате Иванов А.А., так и Иванов Алексей Анатольевич Задача заключается в том, чтобы выделить из этого текста ФИО в отдельный столбец. шаг 1 экспортировал в MS Access шаг 2 выделил строки, имеющие ФИО в формате Иванов А.А. Код: sql 1. 2. 3. 4. 5.
Шаг 3 Попытался выделить ФИО в формате Иванов Алексей Анатольевич Код: sql 1. 2. 3.
В итоге при выполнении данного запроса выводятся даже строки, содержащие только одно слово с прописной буквы. Шаг 4 застрял Подскажите, если несложно как можно решить эту задачу P.S. (мне видится алгоритм: удалить все слова, начинающиеся со строчных букв, удалить цифры и знаки, сделать Trim, далее если видим 3 слова подряд с большой буквы - выводим его как ФИО) Вопрос только в том, как это сделать Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 15:40 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
1. Дополнить знаки препинания пробелами. Т.е. например "," -> ", " 2. Разбить строку на токены по пробелу 3. Обработать в потоке массив на предмет трёх элементов подряд, начинающихся с большой буквы Типа Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 16:11 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
чуть подправил: Option Compare Database Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Вот часть полученных результатов: Persons (оригинал) FindFIO (что получилось)Фёдоров Д.А. Устранено в ходе проверки в ходе проверкиЧерных Д.Д. Начальник отдела охраны труда и промышленной безопасности отдела охраны труда такое ощущение, что access не хочет узнавать больше одного слова с прописной буквы access версии 2013 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 16:43 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
И чё, трудно пройти пошагово и почистить блох? 1) Option Compare Binary 2) For i = 0 To UBound(words) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 16:57 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
Спасибо, не сообразил( Откорректировал и добавил несколько условий: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
Заработало уже практически Осталась только одна проблема: Функция может отловить Иванов А.А.но не может отловить Иванов А. А. т.е., когда пробел между ИО ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 18:01 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
функцию DeleteAllRet6 добавил для того, чтобы удалить непечатные знаки в тексте ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 18:02 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
В общем не очень красиво, но как-то так получилось Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Большое спасибо Akina за Вашу помощь!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 18:05 |
|
Оставить в рандомном тексте только ФИО
|
|||
---|---|---|---|
#18+
Justvictorно не может отловить, Иванов А. А. т.е., когда пробел между ИО Моему коду сиренево - работает в обоих случаях. Хреново доработал,видать... PS. И когда используешь тегш кода, смотри, ё моё, какой тип кода ставишь! и предпросмотром не брезгуй. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2017, 19:19 |
|
|
start [/forum/topic.php?fid=45&msg=39550450&tid=1611925]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 383ms |
0 / 0 |