В Tcl пробел равен пустой строке?

Я использую оператор switch для сопоставления некоторых опций, которые могут иметь или не иметь ЗНАЧЕНИЯ, связанные с ними, а затем извлекаю значения (которые, как я полагаю, могут быть ничем или просто набором пустых строк).

В Tcl они эквивалентны? т.е. будет ли конечный пробел подаваться как опция или анализироваться? Должен ли я «обрезать строку» значение или это не нужно?

**


person Xofo    schedule 26.07.2010    source источник
comment
Хотите привести пример того, о чем вы говорите?   -  person Trey Jackson    schedule 27.07.2010
comment
Принесет ли вам пользу пакет cmdline от tcllib? tcllib.sourceforge.net/doc/cmdline.html   -  person glenn jackman    schedule 27.07.2010


Ответы (2)


По умолчанию пробелы не обрезаются ни в начале, ни в конце строк. Ведь иногда оно может быть значительным. Если вы хотите удалить начальные и конечные пробелы, используйте:

set str [string trim $str]

Вы можете просто удалить начальный или конечный пробел, используя string trimleft и string trimright соответственно.

person Donal Fellows    schedule 27.07.2010

В Tcl пробел равен пустой строке?

Пробел не равен пустой строке. Используя TCL 8.5.2, выражение expr {"" eq " "} оценивается как 0.

будет ли конечный пробел подаваться как опция или анализироваться?

Если вы принимаете строки как есть и не выполняете их обработку, вы получите все имеющиеся пробелы.

Должен ли я «обрезать строку» значение или это не нужно?

Ответ на этот вопрос зависит от вашего приложения. Если пробел незначителен, обрежьте его с помощью команды strim trim (как упоминал Донал Феллоуз). Это, вероятно, упростит вашу логику. Вы также можете использовать regsub -all {\s+} $input_string { }, чтобы свернуть все повторяющиеся символы пробела внутри строки.

person bta    schedule 27.07.2010