我有一个类似“ 673.35”的字符串。定义为VAR3。
我只想删除最后一个“。”所以我只剩下“ 673.35”。对我来说,这非常棘手。在Google Chrome上使用iMacros插件的免费版本。
我不能使用拆分函数或替换函数,因为我的字符串中总是有一个小数点。
SET !VAR3 EVAL("var s = '{{!VAR3}}'; var x,y,z; y = s.split('.'); z = y[1].split('.'); z[0];")
这是我尝试过的方法,但是很明显它返回“ 35”,因为我的字符串中有两个小数点。
为了解决此类问题,发明了“正则表达式”。我不知道imacros是否可以处理正则表达式,但是由于您添加了“ java”作为标签,因此我在此处提供了如何在java中编写的解决方案:
String s = "673.35.";
String regexp = "^(.*)(\\.?)$";
Matcher m = Pattern.compile(regexp).matcher(s);
if ( m.matches() )
{
String result = m.group( 1);
System.out.println( "result: " + result );
}
else
{
System.out.println( "no match");
}
此正则表达式适用于
673.53. > 673.53
673.53 > 673.53
12345. > 12345
12345 > 12345
Regexp似乎很神秘,但是它们非常强大。在java.util.regex.Pattern的Java文档中了解它。这里对上述正则表达式进行了一些解释:'^'是“行/字符串的开始”,'。*'是“任何字符,'\\。”。是“一个点”(因为“。”是“任何字符”,所以点本身必须用“ \”转义,在Java字符串常量中使用时,“ \”也必须转义,因此也要转义两个“ \”),' '是“一次或一次”(在前面的定义中,这里是点)“ $”是“行/字符串的结尾”。括号将搜索结果分组以便随后访问它(“ m.group(1)”)。