Удаление всего перед определенным символом в TCL

#tcl

Вопрос:

Строка ввода : 4567-ABC

Я хочу удалить все, что было до « - » в строке, чтобы вывод был ABC.

Выход: ABC

Комментарии:

1. Теперь у меня есть ответ, если у кого — то есть лучший способ, дайте мне знать — [regsub {.* -} $string»»], который дает мне вывод ABC

Ответ №1:

Если вы хотите избежать регулярных выражений:

 set string 4567-ABC

set output [lindex [split $string "-"] 1]
 

split Команда принимает строку и разделенные символы в качестве аргументов и возвращает список.

Комментарии:

1. В качестве альтернативы lindex [split $string -] end , чтобы получить последний элемент, независимо от его индекса.

Ответ №2:

string last полезно здесь:

 set string 4567-ABC
set idx [string last "-" $string]
set wanted [string range $string $idx 1 end]
 

Или без промежуточной переменной

 set wanted [string range $string [string last "-" $string] 1 end]
 

Это работает даже в том случае, если исходная строка не содержит дефисов.