Как удалить последние n числовых символов из строки в Perl - PullRequest
5 голосов
/ 23 мая 2011

У меня есть ситуация, когда мне нужно удалить последние 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?

Ответы [ 3 ]

9 голосов
/ 23 мая 2011

Регулярное выражение для удаления последних цифр:

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

\d+ соответствует серии цифр, а $ соответствует концу строки. Они заменяются пустой строкой.

8 голосов
/ 23 мая 2011

@ Тим ответ $str =~ s/\d+$// правильно;однако, если вы хотите удалить последние n цифровых символов строки, но не обязательно все символов конечных цифр, вы можете сделать что-то вроде этого:

my $s = "abc123456";
my $n = 3; # Just the last 3 chars.
$s =~ s/\d{$n}$//; # $s == "abc123"
0 голосов
/ 23 мая 2016
// 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"));
    }
}
...