Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

3 876 Posts in 868 Topics- by 723 Members - Latest Member: tablarock

23 May 2012, 07:08
Select Language English | Russian ru | German
Main PageIRC Client KVIrc forumRussian talksСкриптингВопросы по основам KVSУбрать символ из строки
Pages: [1]
Print
Author Topic: Убрать символ из строки  (Read 7210 times)
0 Members and 1 Guest are viewing this topic.
squirrel
Новичок
*

Репутация: 2
Posts: 3


448003642
View Profile Email
« on: 7 December 2007, 02:15 »

Здравствуйте. Требуется из строки убрать 1 символ 1 раз, даже если он повторяется. В связи с этим $str.replace не решает задачи. Подходящей функции я в хелпе не нашел (мб плохо искал)), и хорошего решения не придумал.
Вообщем покажу нагляднее) :
"abcbd" -> "acbd"
Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #1 on: 7 December 2007, 03:45 »

Code:
%str = abcbd
echo Before: %str
%str =~ s/^([^b]*)b(.*)$/\\1\\2/
echo After: %str
Если нужно удалять первое вхождение символа без учета регистра, добавь в конце длинного выражения букву i
Logged
squirrel
Новичок
*

Репутация: 2
Posts: 3


448003642
View Profile Email
« Reply #2 on: 9 December 2007, 01:43 »

Спасибо, но [ и ] оно почему то не обрабатывает)
Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #3 on: 9 December 2007, 02:06 »

символы [ и ] нужно искейпать (причем двойным слешем) (блин, не знаю, как "искейпать" по-русски называется)
Для символа [
%str =~ s/^([^\\[]*)\\[(.*)$/\\1\\2/

и для ]
%str =~ s/^([^\\]]*)\\](.*)$/\\1\\2/
Logged
squirrel
Новичок
*

Репутация: 2
Posts: 3


448003642
View Profile Email
« Reply #4 on: 9 December 2007, 20:35 »

Благодарю) Не знал, что два раза нужно, один раз пробовал..
Чуть не забыл, +1. Wink
« Last Edit: 10 December 2007, 02:39 by squirrel » Logged
noLove
Глобальный модератор
*****

Репутация: 17
Posts: 181



View Profile
« Reply #5 on: 18 December 2007, 21:47 »

символы [ и ] нужно искейпать (причем двойным слешем) (блин, не знаю, как "искейпать" по-русски называется)
экранированием называется
Logged

Alexey
Администратор
*****

Репутация: 45
Posts: 203


View Profile Email
« Reply #6 on: 7 January 2008, 13:47 »

а почему не $str.replace?Smiley
Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #7 on: 8 January 2008, 12:55 »

Есть новый вариант $str.replace, позволяющий делать не глобальную замену, а замену первого вхождения?
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic