| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > [StringReplace] Замена служебных символов |
| Автор: Akella 30.12.2010, 12:16 | ||
| Пользователь в тексте может написать #13 или #10 или #ещё какой-то там номер служебного символа, например #12 или #9 мне в коде нужно сделать вот так отдельно для каждого случая
но для каждого случая не очень практично писать отдельно StringReplace() Есть ли какое-либо универсальное решение? |
| Автор: Keeper89 30.12.2010, 12:43 |
| Думаю стоит завести список доступных спецсимволов (в массив) и пройтись по нему заменой в цикле. |
| Автор: Akella 30.12.2010, 13:06 |
здесь уже не символы, а по идее набор символов: '#13', '#10', '#9' |
| Автор: Snowy 30.12.2010, 13:42 |
| Вручную иди по строке посимвольно. И проверяй символ на диапазон. Это будет гораздо быстрее, чем куча стрингреплэйсов ЗЫ. И идти нужно, конечно, с конца строки. |
| Автор: Keeper89 30.12.2010, 13:45 |
| Лучше строковый массив. И так можно будет позволить вводить только определенные комбинации, а не парсить все, а потом еще проверять на нормальность что получилось. |
| Автор: Snowy 30.12.2010, 14:05 |
| если все коды имеют вид: "#код", то словарик не нужен. нашли #, взяли copy(s, i+1, 4), прогнали через val, получили код, превратили в символ, вырезали кусок (s, i, Length(IntToStr(cod))+1), вместо него воткнули символ. Можно Length не трогать - val сам скажет, какой символ уже не число. |
| Автор: Keeper89 30.12.2010, 16:08 |
| Ну а если за кодом цифра пойдет? |
| Автор: Akella 30.12.2010, 16:41 |
| Snowy, нужно не посимвольно. Ведь '#13' занимает 3 символа в строке. |
| Автор: Snowy 30.12.2010, 16:55 |
| Так я и говорю - ищешь #, Берёшь за ней 2-4 символа и скармливаешь их val'у Тот переварит и выдаст число. Ну а с числом делай что хошь. Можешь грубо переварить в символ, можешь через case пропустить. |
| Автор: Akella 30.12.2010, 17:05 |
| Угу. Спасибо. С Новым годом всех. И меня тоже |
| Автор: Keeper89 30.12.2010, 17:23 |
| Разъясните все-таки мне, серому, каким это образом Val выделит , например, из строки 'фыва#912оор' табуляцию? Или это не предусматривается? |
| Автор: Akella 30.12.2010, 17:32 |
| предусматривается, да именно #9 нужно выделить Добавлено через 30 секунд хотя.... как понять... что пользователь захотел именно #9, а не #91? Добавлено через 54 секунды Но, думаю, что такой случай может быть редкий. |
| Автор: Qu1nt 30.12.2010, 17:51 |
| Использовать специальные символы \r, \n, \t? |
| Автор: Akella 30.12.2010, 17:52 |
| В смысле пользователь должен в тексте это прописать и программа сама всё сделает без конвертации? |
| Автор: Keeper89 31.12.2010, 00:27 | ||
| нет, это делается так же поиском, просто набор символов жестко будет задан Вот пример:
|
| Автор: bems 31.12.2010, 09:13 |
| Шестнадцатиричное представление, при необходимости ведущий ноль |