删除tcl中字符串(word)的一部分

时间:2015-03-16 21:24:34

标签: string tcl special-characters

在Tcl中我有一些变量(字符串)女巫来自某些输入文本文件。 他们太多了...... 有些事情看起来就像你要面对的那样:

 A1 = LP89slc.AT271300.0
 A2 = LP89slc.AT28742.0
 A3 = LP89slc.AT2-71300.0
 A3 = LP89slc.AT2-0.260-0.085

所有这些都在字符串的插入中具有相同的部分({...}+{.AT2}+{...})==> (.AT2) 我想删除下一个(.AT2)的右边部分 例如:

A1 = LP89slc.AT271300.0  ==> LP89slc.AT2
A2 = LP89slc.AT2-71300.0 ==> LP89slc.AT2

另外我想知道有没有办法可以删除特殊字符旁边的字符串的最后一部分,如... At2 ... 例如:设置不可预测的变量之后 {SomeCharecter.At2UndesirablePart}将其更改为{SomeCharecter.At2}

这个问题与第一个问题的区别在于,在第一种情况下,第一部分是有限的和可分配的。 但在第二个问题中,{AT2}的左右两个部分都是不可预测的。

trim trimright trimleft命令不做我的工作!

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用正则表达式替换:

regsub -all -line {^.*\y(\w+\.AT2).*$} $theString {\1} theString

这里棘手的部分是-line选项(当应用于多行字符串时使其工作)和正则表达式中的\y(在开头或结尾处匹配)在这种情况下,这是一个开始,因为\w必须匹配下一个。)

答案 1 :(得分:0)

你编写什么语言?

VB:我做的事情

  

YourString.replace(" .AT2",chr(1))。split(chr(1)(0)&" .AT2"

您可以使用拆分的Java

之类的东西
  

YourString.split(" \ AT2")[0] +' .AT2'

实际上它适用于大多数prorgramming语言。