Как удалить последние n числовых символов из строки в perl

#regex #perl #character

#регулярное выражение #perl #символ

Вопрос:

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

Ответ №1:

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

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

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

Комментарии:

1. @Pradeesh, если этот ответ сработал для вас, пожалуйста, отметьте его «Правильным», установив флажок

Ответ №2:

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

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

Комментарии:

1. Хотя это отвечает на заголовок вопроса, это не отвечает на то, что Прадиш на самом деле спросил 🙂

2. Большое вам спасибо за ответы. Моя проблема заключалась в том, что я не уверен, каково именно значение «n». Это продолжает меняться, когда я читаю строку за строкой из файла. Ответ Тима сделал свое дело :).

3. @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"));
    }
}