|
|
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
Т.е. если у меня бла-бал-бал-<tag> ... </tag>-бла-бал-бал и вопрос замены меня интересует только в рамках этого тега. Т.е. что менять я буду решать уже когда буду внутри фрагмента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 15:17:32 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
BlackGnomeГуест, Например, так - Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2012, 18:19:17 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
BlackGnomeГуест, Если нужно высокопроизводительное решение, то Pattern лучше не использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 00:07:17 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
Так вроде сколько раз поднималась тема и говорили, что скорость работы со строками регулярок высокая. Есть с чем сравнить? Реальные цифры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 01:09:22 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
Большой Синий КитBlackGnomeГуест, Если нужно высокопроизводительное решение, то Pattern лучше не использовать. А что использовать? В цикле перебирать символы строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 10:20:49 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
avp.mkБольшой Синий КитBlackGnomeГуест, Если нужно высокопроизводительное решение, то Pattern лучше не использовать. А что использовать? В цикле перебирать символы строки? Если для задачи хватит одного перебора строки - то да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 13:17:39 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
забыл никЕсли для задачи хватит одного перебора строки - то да. А если нет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 14:27:29 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
avp.mkзабыл никЕсли для задачи хватит одного перебора строки - то да. А если нет?) А если нет - то нет естественно:) Все зависит от задачи, например я выбираю наиболее затратную операцию и делаю перебором - остальные можно и паттерном, или заранее разбиваешь строку на несколько(по смыслу) и работаешь с ними в параллели. ну и т.п. - повторюсь, от задачи зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 14:39:14 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
забыл ник Все зависит от задачи, например я выбираю наиболее затратную операцию и делаю перебором А как выбираете, на глаз или специальными средствами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 17:32:32 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
Joe Rзабыл ник Все зависит от задачи, например я выбираю наиболее затратную операцию и делаю перебором А как выбираете, на глаз или специальными средствами? Обычно это понятно из контекста. Ну смотри у меня была задача распарсить sql-строку запроса(перевести в lower-case добавить кое-где пробелы, кое-где убрать и т.п.) далее, в зависимости от того есть ли в строке limit x offset y - получить числа x и y(для того чтобы достать из кэша только нужные данные), далее заменить все что внутри {#...} на какие то данные. и еще много чего. Эта задача не решалась обходом одной строки, ну может и решалась, но слишком много состояний(кэш включен или нет, есть что замещать или нет, есть лимит или нет...). Был выбран вариант - оптимизировать наиболее частый случай, в предположении что нету лимитов, кэша и т.д - он реализован перебором строки. Если же во время перебора выясняется что все сложнее - то строку получившуюся после первого прохода(все в lower-case пробелы расставлены, eq заменено на == и т.д) - уже прогоняем через паттерны всякие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 18:01:45 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
забыл ник, Понятно. Если у меня возникают какие-то сомнения насчёт скорости, я обычно беру профайлер и считаю с линейкой у кого длиннее), чтоб уж наверняка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 18:27:43 |
|
||
|
Как сделать замену внутри нужного фрагмента строки?
|
|||
|---|---|---|---|
|
#18+
Joe Rзабыл ник, Понятно. Если у меня возникают какие-то сомнения насчёт скорости, я обычно беру профайлер и считаю с линейкой у кого длиннее), чтоб уж наверняка. Ну в общем-то тоже правильно, но зачастую нужно учитывать саму задачу. Например, профайлер показал что наиболее частый случай - 1. строка в которой нет limit, но есть #{} - 45% 2. строка - где нет ничего особенного - 37% 3. остальные - 18% Если решать в лоб - то надо бы оптимизировать первый вариант, но по логике задачи - строку в ЛЮБОМ случае надо привести к общему виду(,без лишних пробелов и ловер кейс, замена eq на ==.... etc.), оптимизировать вариант 1 - приведет к большой мешанине кода, вариант 2 - буквально на чуть-чуть упадет производительность в наиболее частом случае, зато код читаем и легко управляем.. Без компромиссов никак:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 18:35:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37814372&tid=2131700]: |
0ms |
get settings: |
17ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
43ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
96ms |
get tp. blocked users: |
3ms |
| others: | 330ms |
| total: | 550ms |

| 0 / 0 |
