Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. 1. При каких условиях функция может дать не правильный результат ? 2. Можно ли сделать функцию более быстрее ? функция будет использоватся в подстановке параметров в скл запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:50 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323, Очевидный недостаток -- она заменяет key только один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:53 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, ок. вложу ее в рекурсивную функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:56 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323, Есть более простая реализация. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:56 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
NekZgera3323, Есть более простая реализация. и чем же она лучше ? тем что она стала на пару строк короче.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 18:59 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323, Выбор за Вами. Учитывая, что в С++, принято использовать std::string, вместо char * для различных строковых операций, дабы не портить себе настроение при написании кода ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 19:18 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323MasterZiv, ок. вложу ее в рекурсивную функцию. Ага, и рекурсивно будешь память выделять ? Ну-ну... Выделение памяти -- достаточно дорогая операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 19:43 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
MasterZivнет. память будет выделена раньше. к примеру в main ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2014, 20:06 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Я так понял, что вы считаете что она работает, раз спрашиваете gera33231. При каких условиях функция может дать не правильный результат ? gera3323, а вы уверены что ваша функция работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 02:16 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
1. Код: plaintext 1. Зачем вы просите памяти на 1 больше чем нужно ? 2. Код: plaintext 1. 2. 3. почему не выделяете память в одну строку через malloc ? 3. Зачем вы ставите ; после окончания блоков операторов ? 4. Покажите квалификаторами ваше отношение к входным параметрам. Какие из них меняются функцией, а какие нет. 5. Самый важный вопрос. Что на ваш взгляд должна делать эта функция ? 6. Вы делали её самостоятельно ? 7. Вызов функции правильный, на ваш взгляд ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 02:38 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Если честно, то мне не нравится даже её вызов, не говоря про код. Но раз никто другой не прокомментировал, то возможно всё в порядке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 02:39 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
String replacement в общем случае нельзя применять к SQL запросам. Key выражение может внезапно оказаться в строковом литерале и тогда результат - непредсказуем. Код: plaintext 1. 2. 3. 4. Нужно не реплейсить запрос а пользоваться специальными Builder-ами запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 10:14 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
maytonString replacement в общем случае нельзя применять к SQL запросам. Key выражение может внезапно оказаться в строковом литерале и тогда результат - непредсказуем. Код: plaintext 1. 2. 3. 4. Нужно не реплейсить запрос а пользоваться специальными Builder-ами запросов. ... которые сделают то же самое за тебя... (но возможно правильно, с экранированием) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 14:59 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Это как будет реализован билдер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 15:49 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЗачем вы просите памяти на 1 больше чем нужно ? Раньше функция по другому немного была устроена. если не указать один символ, то она зависает. просто не убрал это. 2. сама функция расположена в классе и буфер там. Я и этот код просто скопировал и вставил сюда. char *buf = NULL; buf = (char*)realloc( buf, len_str ); почему не выделяете память в одну строку через malloc ? память выделяется в конструкторе. а перераспределяется( в случаи если ее мало) в другой функции перед вызовом str_replace и другими. 3. Зачем вы ставите ; после окончания блоков операторов ? такой стиль. что в этом плохого ? 4. Покажите квалификаторами ваше отношение к входным параметрам. Какие из них меняются функцией, а какие нет. const дает ошибку. _in_ что ли ? 5. Самый важный вопрос. Что на ваш взгляд должна делать эта функция ? заменить в строке под строку. заменить аа на пп кккккккккААкккк -> кккккккккППкккк или в sql запросе будет 6. Вы делали её самостоятельно ? Да. 7. Вызов функции правильный, на ваш взгляд ? Считаю да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 15:52 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЕсли честно, то мне не нравится даже её вызов, не говоря про код. Но раз никто другой не прокомментировал, то возможно всё в порядке. ну сделайте правильно. раз вы такой гений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 15:54 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323функция будет использоватся в подстановке параметров в скл запросе. Неужели ещё существуют СУБД, не поддерживающие параметризованные запросы?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 19:29 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovgera3323функция будет использоватся в подстановке параметров в скл запросе. Неужели ещё существуют СУБД, не поддерживающие параметризованные запросы?.. Для аналитических запросов Oracle обычно хардкодят константы. Это имеет своё обоснование для тех кто ценит время работы процесса аналитики. Плюс для некоторых особо извращённых GUI-интерфейсов профиль выражения WHERE может быть неопределеён или содержать OVER 9000 параметров большая часть которых не используется но может быть активирована пользователем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 19:43 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Меня всегда удивляло: почему создать несколько тысяч (java) классов - нормально, а структурировать несколько сотен (SQL) запросов - нечто запредельное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 20:46 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
О структуризации можно говорить только в рамках конкретной бизнес-задачи. В общем случае SQL не структурируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 20:53 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
maytonО структуризации можно говорить только в рамках конкретной бизнес-задачи. В общем случае SQL не структурируется.Но, обычно, и нет задачи написания "универсального решателя проблем", а структурирование конкретных запросов может указать пути более эффективной организации кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 21:09 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
maytonДля аналитических запросов Oracle обычно хардкодят константы. Это имеет своё обоснование для тех кто ценит время работы процесса аналитики. Оракл великолепно справляется с оптимизацией и с бинжёными параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2014, 23:00 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
MasterZivmaytonДля аналитических запросов Oracle обычно хардкодят константы. Это имеет своё обоснование для тех кто ценит время работы процесса аналитики. Оракл великолепно справляется с оптимизацией и с бинжёными параметрами. Этот вопрос лучше обсудить в форуме Oracle. Это касается SQL_ID и управления планами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 00:36 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323, то что вам нужно, я бы реализовал следующим образом (данная реализация представлена в первом приближении). Основная функция возвращает новую строку с 1 заменённой подстрокой. Код: plaintext 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. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 04:57 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Прошу прощение, комментарий к функции поиска подстроки неверный "//поиск первой слева подстроки в строке возвращает стартовый индекс подстроки в строке, либо -1." возвращает указатель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 04:59 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Более интересен случай с заменой всех таких подстрок в одной строке. Данная задача интересна как с точки зрения вариаций постановки, так и с точки зрения реализации. С большой долей вероятности всё это уже реализовано, но более интересно решить эту задачу самому(к сожалению мне сейчас нужно готовиться к отлету послезавтра, потому просто нет времени((). Но тем не менее я напишу свои мысли по поводу постановки и возможных вариантов решения этой задачи. 1.Нам дана строка и подстрока, нужно заменить все подстроки в исходной строке один раз. В лоб данная постановка решается решается следующим образом: идём по строке, встретили подстроку, операции аллоцирования, вставка новой подстроки, идём дальше.. Однако выше я встретил справедливое замечание по поводу того что слишком часто перевыделять память не стоит, по причине ресурсоёмкости данной операции. Таким образом, хорошо было бы сразу узнать сколько нам нужно выделить памяти. А уже потом проводить замены. Как это можно узнать ? Нужно пройтись по массиву символов, и узнать сколько потребуется замен. А далее что ? Проходить второй раз, снова искать индексы начала подстрок для замены ? Мне такой вариант не кажется самым хорошим. Потому можно было в первом проходе сохранить в массиве индексы начала подстрок для замены. Но мы не знаем сколько таких элементов будет в массиве, потому снова мы приходим к многократным операция аллоцирования(я беру общий случай, потому количество этих операций может быть например 10!, если нас массив соответствующего размера). Это тоже не очень хорошо. Потому можно выделить сразу например 10^5 байт под этот массив, и если не будет хватать, то увеличивать его в двое по мере необходимости. Вот такой вариант стоит отметить. Хотя тут у нас появляется побочная сложность, а это нам не очень нужно. Есть другой вариант, пусть мощность (количество элементов в массиве символом), равна например p. Можно создать битовый массив(а это можно сделать ?) мощностью p, и во время поиска подстрок в строке записывать в соответствующий бит значений 1, например, которое будет нам показывать что тут нужна замена. Но опять таки, при больших объёмах памяти, у нас появляются новые траты памяти. И если мы можем создать битовый массив, то мы затратим p+p/8 вместо p байт(это ещё терпимо), а если битовый массив создать нельзя, то мы тратим памяти в два раза больше. 2. Нам дана строка и подстрока, нужно заменить все подстроки циклически. Тут снова идёт разброс по вариантам постановки и реализации, потому писать пока не буду. Нужно подробно описывать нюансы, например такой: у нас есть строка abcabcabc, нужно заменить подстрок abcabc на 123, что в какой порядке менять ? PS битовый массив создать можно, по крайней мере мы можем его имитировать. если не ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 06:27 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
SashaMercury, ты протестировал тот кейс с заменой строки внутри литерала который я приводил выше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 12:31 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДанная задача интересна как с точки зрения вариаций постановки, так и с точки зрения реализации. Нет. Неинтересна. Книжники и Фарисеи давно уже прописали это в свои пергаменты. Читай в поисковике по следующим ключевым словам. Алгоритм Кнута — Морриса — Пратта Бойера — Мура Ахо — Корасик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 12:53 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
не проверял. завтра проверю, не очень понял где должны быть проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 15:31 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
SashaMercury, смотри внимательно мой пост 16608361 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 15:41 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Видимо плохо прочитал, но в чём может быть проблема не понял ( Вот что я сделал(хотя мне не нравится как тут вызывается функция) Код: plaintext 1. 2. 3. 4. 5. 6. 7. результат прикрепил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 01:55 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
gera3323SashaMercuryЗачем вы просите памяти на 1 больше чем нужно ? Раньше функция по другому немного была устроена. если не указать один символ, то она зависает. просто не убрал это. 2. сама функция расположена в классе и буфер там. Я и этот код просто скопировал и вставил сюда. char *buf = NULL; buf = (char*)realloc( buf, len_str ); почему не выделяете память в одну строку через malloc ? память выделяется в конструкторе. а перераспределяется( в случаи если ее мало) в другой функции перед вызовом str_replace и другими. 3. Зачем вы ставите ; после окончания блоков операторов ? такой стиль. что в этом плохого ? 4. Покажите квалификаторами ваше отношение к входным параметрам. Какие из них меняются функцией, а какие нет. const дает ошибку. _in_ что ли ? 5. Самый важный вопрос. Что на ваш взгляд должна делать эта функция ? заменить в строке под строку. заменить аа на пп кккккккккААкккк -> кккккккккППкккк или в sql запросе будет 6. Вы делали её самостоятельно ? Да. 7. Вызов функции правильный, на ваш взгляд ? Считаю да. Только сейчас заметил ваш ответ. 1. Лишний байт, это не правильно, я например пытался полминуты понять зачем он, пока не понял что он скорее всего не нужен. 3. То, что это затрудняет чтение программы. Что в этом хорошего ? 4. Разбирайтесь, что за ерунда. Должен быть const ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 02:00 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
mayton, кажется я понял про что вы, функция работает правильно, то что её нельзя применять к SQL запросам, другой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 02:03 |
|
||
|
Помогите с функцией.Замена строки в подстроке.
|
|||
|---|---|---|---|
|
#18+
Странно что никто в топике не вспомнил про функцию strstr(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2014, 09:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019294]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 284ms |
| total: | 451ms |

| 0 / 0 |
