【问题标题】:iMacros - remove last character in stringiMacros - 删除字符串中的最后一个字符
【发布时间】:2019-11-17 15:45:52
【问题描述】:

我有一个类似“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”,因为我的字符串中有两个小数点。

【问题讨论】:

    标签: javascript java string split imacros


    【解决方案1】:

    为了解决这些问题,发明了“正则表达式”。我不知道 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
    

    正则表达式似乎很神秘,但它们非常强大。在 java.util.regex.Pattern 的 java doc 中了解它。这里对上述正则表达式进行一些解释:'^' 是“行/字符串的开头”,'.*' 是“任何字符,'\\.'是“一个点”(因为 '.' 是“任何字符”,点本身必须被 '\' 转义,在 java 字符串常量中使用的 '\' 也必须被转义,因此两个 '\'),' ?是“一次或没有”(前面的定义,这里是点)“$”是“行/字符串的结尾”。括号对搜索结果进行分组以便之后访问它(“m.group(1)”)。

    【讨论】:

    • 你从我这里得到一个 '+1',即使 Qt 与 'Java' 无关,iMacros 也不支持 'Java' => 但 'JavaScript'(在 'EVAL() ')... - 我开始编辑 Qt 以删除 {java} 标记(并添加 {javascript} 一个),然后当我注意到您的答案时重新添加它... 'REGEXP' 可以/也可以是与'JS'一起使用类似于你的答案,但我总是觉得它非常“繁琐复杂”,会有“更简单”的解决方案,仍然使用'split()'和/或其他JS方法......(原始来自 OP 的“EVAL()”声明来自我,取自 iMacros 论坛,啊-啊...!)
    猜你喜欢
    • 2011-12-15
    • 2017-08-19
    • 2016-10-11
    • 2020-12-30
    • 1970-01-01
    相关资源
    最近更新 更多