繁体   English   中英

提供文本搜索命令其参数的简便方法? (Tcl / Tk)

[英]Concise way for supplying text search command its parameters? (Tcl/Tk)

我正在用Tcl / Tk编写的程序中实现“查找”功能,而我正努力寻找一种简洁/有效的方式来编写此代码。 搜索将具有不同的选项,例如“全部查找”,“精确”和“向上/向下搜索”等。

这是我尝试过的,也是我想要的:

set idx [.text index insert];
set search_for $::search_entry;

set parameters "";
if {$::match_exact == 1} {append parameters "-exact "};
if {$::case_sensitive == 0} {append parameters "-nocase "};
if {$::find_all == 1} {append parameters "-all "};
if {$::direction == 1} {
    append parameters "-backwards";
} else {
    append parameters "-forewards";
}

.text search $parameters $search_for $idx;

尝试搜索时,出现以下错误:

bad switch "-nocase -forewards": must be --, -all, -backwards, -count, -elide, -exact, -forwards, -nocase, -nolinestop, -overlap, -regexp, or -strictlimits

请告诉我,有一种类似的简洁方式可以编写此代码吗? 我担心我将不得不为用户设置的每种选项组合创建不同的搜索...

您正在将参数定义为字符串。 它必须是您在调用搜索命令时展开的列表。 它看起来像这样:

set parameters [list]
if {$::match_exact == 1} {lappend parameters "-exact"}
...
.text search {*}$parameters $search_for $idx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM