【问题标题】:How to remove last n number of numeric characters from a string in perl如何从perl中的字符串中删除最后n个数字字符
【发布时间】:2011-05-23 04:49:09
【问题描述】:

我有一种情况需要删除/ 字符后的最后一个n 数字字符。

例如:

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61

在最后一个/ 之后,我需要将数字 61 从行中删除,以便输出为,

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/

我尝试使用chop,但它只删除最后一个字符,即。 1,在上面的例子中。

上面的最后一部分,即 61,可以是任何东西,比如 221 或 2 或 100 任何东西。我需要去掉/ 之后的最后一个数字字符。在 Perl 中可以吗?

【问题讨论】:

    标签: regex perl character


    【解决方案1】:

    删除最后一位数字的正则表达式替换:

    my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61';
    $str =~ s/\d+$//;
    

    \d+ 匹配一系列数字,$ 匹配行尾。它们被替换为空字符串。

    【讨论】:

    • @Pradeesh,如果此答案对您有用,请选中复选标记将其标记为“正确”
    【解决方案2】:

    @Tim 对$str =~ s/\d+$// 的回答是正确的;但是,如果您想删除字符串的最后 n 个数字字符,但不一定是 所有 个尾随数字字符,则可以执行以下操作:

    my $s = "abc123456";
    my $n = 3; # Just the last 3 chars.
    $s =~ s/\d{$n}$//; # $s == "abc123"
    

    【讨论】:

    • 虽然这回答了问题标题,但它并没有回答 Pradeesh 实际提出的问题:)
    • 非常感谢您的回复。我的问题是我不确定“n”的确切值是多少。当我从文件中逐行读取时,它一直在变化。蒂姆的回答成功了:)。
    • @Tim:是的 - 这就是为什么我开始回答你的问题 =)
    【解决方案3】:
    // Code to remove last n number of strings from a string.
    // Import common lang jar
    import org.apache.commons.lang3.StringUtils;
    
    public class Hello {
        public static void main(String[] args) {
            String str = "Hello World";
            System.out.println(StringUtils.removeEnd(str, "ld"));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2015-02-23
      • 1970-01-01
      • 2018-12-03
      • 2014-11-08
      • 2021-12-11
      • 2011-11-18
      • 1970-01-01
      • 2017-08-19
      相关资源
      最近更新 更多