【发布时间】:2018-08-09 12:42:54
【问题描述】:
如何在不使用“/”字符的情况下从用户那里获取包含特殊字符的输入并将其视为字符串?
例如:
假设有一个过程proc a {input} {...} 得到以下字符串"classA.arr2[0].classB"。
如果我没有在“[0]”旁边添加字符“/”,它会认为 0 是一个命令/过程。
我会说得更清楚:
我添加了一个代码,它是评估参数的Class A 方法的一部分。
public method config {args} {
if {[llength $args] > 1} {
foreach {option value} $args {
if {[string length $option] == 0 || [string length $value] == 0} {
puts "Runtime error::Bad Input: option flag or value is missing"
return ""
}
switch -- $option {
-scope {
if { [regexp {[A-Za-z]+} $value] } {
set _scope $value
} else {
puts "Runtime error::Bad Input: BAD SCOPE FORMAT"
return ""
}
} ...
现在我想运行以下代码:
A a
a config -scope "string1.string2[0].string3"
【问题讨论】:
-
信息不足:您如何使用 $input 变量?
-
我们需要看看您的问题出在哪里。您的输入字符串在什么时候被评估以使
[0]成为问题? Tcl 从不做双重替换,所以你的代码中必须有一些东西。