Обработка символов и строк в Java - PullRequest
0 голосов
/ 22 июля 2011

Простой вопрос, который я не знаю, есть ли у Java и простое решение.

У меня есть строка вроде: name.ext.ext.out.end

Мне нужно избавиться от .outвсегда предпоследнее расширение.Есть ли что-то вроде indexof(), но начиная с конца?Я знаю, как сделать это в зачаточном состоянии, но, может быть, есть гораздо лучшие.

Ответы [ 4 ]

3 голосов
/ 22 июля 2011

Если вы знаете, что всегда будет ".out", почему бы не использовать метод replace() в API класса String.

String extension = ".out";
String name = "name.ext.ext.out.end";
String newName = name.replace(extension, "");

РЕДАКТИРОВАТЬ: другое решение

String extension = ".out";
String name = "name.ext.ext.out.end";

//searches backward from the end of the string
name.lastIndexOf(extension, name.length());
3 голосов
/ 22 июля 2011

Есть lastIndexOf(..), который должен делать.

2 голосов
/ 22 июля 2011

Получить индекс с помощью lastIndexOf()

Вы можете сделать replace() с указанной строкой, которую следует заменить на ""

0 голосов
/ 22 июля 2011

У вас вопрос довольно простой: как убрать предпоследний .Это довольно просто, но вы должны сделать это в два этапа ... Вот оно:

    /**
     * Returns the penultimate of a string.
     */
public static String getPenultimate( String str, char separator ){
    int pos1 = str.lastIndexOf(separator);
    if( pos1 > 0 ){
        String substr = str.substring(0, pos1 );
        int pos2 = substr.lastIndexOf(separator);
        if( pos2 > 0 ){
            return substr.substring(0, pos2) + str.substring(pos1);
        }
        return str.substring(pos1+1);
    }
    return null;
}

public static void main( String[] args){
    System.out.println( getPenultimate( "name.ext.v2.out.end", '.' ) );
    System.out.println( getPenultimate( "out.end", '.' ) );
    System.out.println( getPenultimate( "end", '.' ) );
}

main () дает следующие результаты:

    name.ext.v2.end
    end
    null 

ноль возвращается, если данных недостаточно. Разделитель - это точка для передачи в качестве параметра (метод является общим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...