我遇到需要删除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有可能吗?
答案 0 :(得分:8)
正则表达式替换删除最后一位数字:
my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61';
$str =~ s/\d+$//;
\d+
匹配一系列数字,$
匹配该行的结尾。它们被空字符串替换。
答案 1 :(得分:7)
@Tim对$str =~ s/\d+$//
的回答是正确的;但是,如果你想删除一个字符串的最后一个 n 数字字符,但不一定是所有的结尾数字字符,你可以这样做:
my $s = "abc123456";
my $n = 3; # Just the last 3 chars.
$s =~ s/\d{$n}$//; # $s == "abc123"
答案 2 :(得分:0)
// 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"));
}
}