Tcl 中带换行符的字符串文字
String literal with line breaks in Tcl
我想在我的源代码中有一个由多行组成的字符串(即包含 LF 字符)。
解决方案应该:
- 将每个数据行放在单独的源代码行中。
# Bad:
set lines "line 1\nline 2\nline 3"
- 不添加空的前导或尾随行:
# Bad:
set lines {
line 1
line 2
line 3
}
puts [split $lines \n]
# Prints: {} {line 1} {line 2} {line 3} {}
- 没有挂线:
# Bad:
set lines {line 1
line 2
line 3}
到目前为止我想到了什么:
set lines {
line 1
line 2
line 3
}
set lines [string range $lines 1 end-1]
有没有更好的方法?
怎么样:
% set lines [join [list {*}{
"line 1"
"line 2"
"line 3"
}] \n]
% split $lines \n
{line 1} {line 2} {line 3}
我最终选择了选项 2,并通过 string trim
删除了开头和结尾的空行
set lines {
line 1
line 2
line 3
}
set lines [string trim $lines]
puts [split $lines \n]
打印:
{line 1} {line 2} {line 3}
我想在我的源代码中有一个由多行组成的字符串(即包含 LF 字符)。
解决方案应该:
- 将每个数据行放在单独的源代码行中。
# Bad: set lines "line 1\nline 2\nline 3"
- 不添加空的前导或尾随行:
# Bad: set lines { line 1 line 2 line 3 } puts [split $lines \n] # Prints: {} {line 1} {line 2} {line 3} {}
- 没有挂线:
# Bad: set lines {line 1 line 2 line 3}
到目前为止我想到了什么:
set lines {
line 1
line 2
line 3
}
set lines [string range $lines 1 end-1]
有没有更好的方法?
怎么样:
% set lines [join [list {*}{
"line 1"
"line 2"
"line 3"
}] \n]
% split $lines \n
{line 1} {line 2} {line 3}
我最终选择了选项 2,并通过 string trim
删除了开头和结尾的空行set lines {
line 1
line 2
line 3
}
set lines [string trim $lines]
puts [split $lines \n]
打印:
{line 1} {line 2} {line 3}