Многострочная строка - PullRequest
0 голосов
/ 08 июня 2018

У меня есть проблемная строка, которая состоит из нескольких строк:

line1 
Link1: //website/go/<example> 
line2

Я пытаюсь выполнить обрезку, чтобы получить только часть ссылки на веб-страницу ( просто адрес, который может быть различным - в данном случае ")// website / go / "), но есть некоторые дополнительные признаки до и после.

Моя попытка:

set temp [string map { " " "" "line1" "" "Link1: " "" "line2" "" } $output]
puts "found link : $temp

И вывод:

found link :<empty line>
//website/go/<example>
<empty line>`  

Как удалить все пробелы, переводы строк и т. Д. И обрезать ихспособ получить только ту часть строки, которую я ищу.В этом случае получить просто: //website/go/<example>?

1 Ответ

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

Учитывая эти входные данные:

line1 
Link1: //website/go/<example> 
line2

Вы можете использовать string map, как вы делаете, а затем постобработать результат с string trim (при условии, что вы ожидаете только одну вещь в конце) или удалить переводы строк с помощью другого элемента отображения.Для ясности две строки:

set temp [string map { " " "" "line1" "" "Link1: " "" "line2" "" } $output]
set temp [string trim $temp]
puts "found link : $temp

Однако в этом случае я бы на самом деле использовал regexp, чтобы выбрать нужные данные:

regexp -line {Link1:\s+(.*\S)} $output -> temp
puts "found link : $temp

Регулярные выражения, как правило, больше подходят для анализа частично отформатированных данных, если вы помните, что они должны быть короткими.Чем дольше RE, тем труднее его понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...