Удалить часть строки после знака равенства - PullRequest
0 голосов
/ 04 июня 2018

Я хотел бы попросить помощи в удалении части строки.
Входная строка: var1=dog,var2=home

Что я хотел бы получить в результате:
Выходная строка: var1=dog,var2=

Таким образом, идея состоит в том, чтобы обрезать конец строки до первого знака равенства.Я пробовал какую-то возможность, например, обрезку, но безрезультатно.

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Ваша лучшая ставка, вероятно,

set input var1=dog,var2=home
regexp {.*=} $input output

То есть соответствует самой длинной префиксной последовательности символов, заканчивающейся знаком равенства, и сохраните ее в переменной output.

Другой способ:

set output [string range $input 0 [string last = $input]]

Получить все символы в $input от первого символа до (и включая) последнего знака равенства, найденного в строке.

set output [string trimright $input ehmo]

действительно будет работатьдля этого точного примера (я скремблировал символы, чтобы подчеркнуть, что обрезка выполняется не по строке, а по символу).

0 голосов
/ 05 июня 2018

Вы также можете использовать обычный regsub:

set x "var1=dog,var2=home"
regsub -all {\=[a-z]+$} $x "=" x
puts $x
0 голосов
/ 04 июня 2018

Вы можете найти индекс последней = и взять подстроку, заканчивающуюся там:

set str "var1=dog,var2=home"
set new [string range $str 0 [string last = $str]]
puts $new
var1=dog,var2=
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...