Javascript iMacros-删除字符串中的最后一个字符

Javascript iMacros-删除字符串中的最后一个字符,javascript,java,string,split,imacros,Javascript,Java,String,Split,Imacros,我有一个类似“673.35”的字符串,定义为VAR3 我只是想删除最后一个“.”,所以剩下的是“673.35”。事实证明,这对我来说非常棘手。在Google Chrome上使用免费版本的iMacros插件 我不能使用split函数或replace函数,因为字符串中总是有小数点 SET !VAR3 EVAL("var s = '{{!VAR3}}'; var x,y,z; y = s.split('.'); z = y[1].split('.'); z[0];") 这是我尝试过的,但很明显它返回

我有一个类似“673.35”的字符串,定义为VAR3

我只是想删除最后一个“.”,所以剩下的是“673.35”。事实证明,这对我来说非常棘手。在Google Chrome上使用免费版本的iMacros插件

我不能使用split函数或replace函数,因为字符串中总是有小数点

SET !VAR3 EVAL("var s = '{{!VAR3}}'; var x,y,z; y = s.split('.'); z = y[1].split('.'); z[0];")

这是我尝试过的,但很明显它返回“35”,因为我的字符串中有两个小数点。

为了解决此类问题,发明了“正则表达式”。我不知道imacros是否可以处理正则表达式,但由于您添加了“java”作为标记,我在这里提供了如何用java编写的解决方案:

SET !VAR3 EVAL("var s = '{{!VAR3}}'; var x,y,z; y = s.split('.'); z = y[1].split('.'); z[0];")
    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");
    }
此regexp适用于

673.53. > 673.53
673.53  > 673.53
12345.  > 12345
12345   > 12345

Regexp看起来很神秘,但它们非常强大。在java.util.regex.Pattern的java文档中了解它。这里有一些关于上述regexp的解释:“^”是“行/字符串的开始”,“.*”是“任何字符”,“一点”是“一点”(因为“.”是“任何字符”,点本身必须由“\”转义,在java字符串常量中使用“\”也必须转义,因此两个“\”,“?”是“一次或无”(根据前面的定义,这里是点)$”行末/string“。parantheses将搜索结果分组,以便以后访问它(“m.group(1)”。

你从我这里得到一个“+1”,即使Qt与“Java”无关,iMacros也不支持“Java”=>而支持“JavaScript”(在“EVAL()”中)…-我开始编辑Qt以删除{Java}标记(并添加{JavaScript}标记)然后当我注意到您的答案时,重新添加它…“REGEXP”可以/也可以与“JS”一起使用,类似于您的答案,但我始终觉得它非常“繁琐,复杂”,会有“更简单”的解决方案,仍然使用“split()”,和/或其他JS方法…(原始的'EVAL()“OP的声明来自我,摘自iMacros论坛,啊啊…!)