-1

我有以下 URL,并希望使用 iRule (TCL) 删除括号:

http://ing1.example.com:32100/test1/test1.json/Streams(Type_4000000)

when HTTP_REQUEST {
  if { ([HTTP::host] eq "ing1.example.com") or ([HTTP::host] eq "ing2.example.com" ) and ([HTTP::uri] contains "Streams")}
      set NEW_URI [string trimleft [HTTP::uri] ( or )]
  }

以上正确吗?谢谢你。

4

1 回答 1

1

要从字符串中的任何位置删除括号(URL 只是具有一些格式约束的字符串),您应该使用string map.

proc removeParens {string} {
    # Convert each parenthesis character into an empty string, removing it
    string map {( "" ) ""} $string
}

regsub也可以使用该命令,但这样做会稍微有点矫枉过正。该string trim命令不会轻易工作;这只删除字符串两端的字符,而不是中间的字符,所以你需要将它拆分并加入它等等,如果你不需要这样做,那就太费力了!


请注意,URL 具有引用字符的语法,这可能导致括号在某种意义上仍然存在(尽管实际上并不存在);这对您是否重要取决于您正在进行的其他处理。一般来说,对任何和所有 URL 处理都非常小心,这一点很重要。

于 2022-03-04T08:08:16.473 回答