Java - удаление первого символа строки

На Java у меня есть строка:

Jamaica

Я хотел бы удалить первый символ строки, а затем вернуть amaica

Как бы я это сделал?

вопрос задан 21.12.2010
Calibre2010
1291 репутация

12 ответов


  • 265 рейтинг

    Используйте функцию substring() с аргументом 1, чтобы получить подстроку с позиции 1 ( после после первого символа) до конца строки (оставляя второй аргумент по умолчанию равным полной длине строки).

    "Jamaica".substring(1);
    
    ответ дан marcog, с репутацией 83127, 21.12.2010
  • 54 рейтинг
    public String removeFirstChar(String s){
       return s.substring(1);
    }
    
    ответ дан Ahmed Kotb, с репутацией 3904, 21.12.2010
  • 49 рейтинг

    Используйте substring() и укажите количество символов, которые вы хотите обрезать спереди.

    String value = "Jamaica";
    value = value.substring(1);
    

    Ответ: "amaica"

    ответ дан Thilina Gihan Priyankara, с репутацией 499, 20.02.2014
  • 46 рейтинг

    В Java удаляйте ведущий символ, только если это определенный символ

    Используйте троичный оператор Java для быстрой проверки присутствия вашего персонажа перед его удалением. Это удаляет начальный символ, только если он существует, если передана пустая строка, вернуть пустую строку.

    String header = "";
    header = header.startsWith("#") ? header.substring(1) : header;
    System.out.println(header);
    
    header = "foobar";
    header = header.startsWith("#") ? header.substring(1) : header;
    System.out.println(header);
    
    header = "#moobar";
    header = header.startsWith("#") ? header.substring(1) : header;
    System.out.println(header);
    

    Отпечатки:

    blankstring
    foobar
    moobar
    

    Java, удалите все экземпляры символа в любом месте строки:

    String a = "Cool";
    a = a.replace("o","");
    //variable 'a' contains the string "Cl"
    

    Java, удалите первый экземпляр символа в любом месте строки:

    String b = "Cool";
    b = b.replaceFirst("o","");
    //variable 'b' contains the string "Col"
    
    ответ дан Eric Leschinski, с репутацией 81465, 14.01.2013
  • 16 рейтинг

    Можно использовать метод подстроки класса String, который принимает только начальный индекс и возвращает подстроку, которая начинается с символа в указанном индексе и продолжается до конца строки.

    String str = "Jamaica";
    str = str.substring(1);
    
    ответ дан codaddict, с репутацией 337564, 21.12.2010
  • 11 рейтинг

    Главное, что нужно понять в Java, это то, что строки неизменяемы - вы не можете их изменить. Поэтому нет смысла говорить о «удалении символа из строки». Вместо этого вы создаете НОВУЮ строку с нужными вам символами. Другие посты в этом вопросе дают вам множество способов сделать это, но важно понимать, что они никак не меняют исходную строку. Любые ссылки на старую строку будут по-прежнему ссылаться на старую строку (если только вы не измените их для ссылки на другую строку) и не будут затронуты вновь созданной строкой.

    Это имеет ряд последствий для производительности. Каждый раз, когда вы «модифицируете» строку, вы фактически создаете новую строку с учетом всех накладных расходов (выделение памяти и сборка мусора). Поэтому, если вы хотите внести ряд изменений в строку и заботиться только о конечном результате (промежуточные строки будут мертвыми, как только вы их «измените»), может иметь смысл использовать вместо них StringBuilder или StringBuffer.

    ответ дан Chris Dodd, с репутацией 78420, 22.12.2010
  • 9 рейтинг
    public String removeFirst(String input)
    {
        return input.substring(1);
    }
    
    ответ дан Reese Moore, с репутацией 9636, 21.12.2010
  • 9 рейтинг

    вы можете сделать так:

    String str="Jamaica";
    str=str.substring(1, title.length());
    return str;
    

    или вообще:

    public String removeFirstChar(String str){
       return str.substring(1, title.length());
    }
    
    ответ дан eli am, с репутацией 99, 21.06.2016
  • 8 рейтинг

    substring () метод возвращает новую строку, содержащую подпоследовательность символов, в настоящее время содержащихся в этой последовательности.

    Подстрока начинается с указанного start и продолжается до символа index end - 1 .

    Имеет две формы. Первый -

    1. String substring(int FirstIndex)

    Здесь FirstIndex указывает индекс, по которому подстрока будет начать. Эта форма возвращает копию подстроки, которая начинается в FirstIndex и запускается до конца вызывающей строки.

    1. String substring(int FirstIndex, int endIndex)

    Здесь FirstIndex указывает начальный индекс, а endIndex указывает остановочный пункт. Возвращаемая строка содержит все символы от начального индекса до конечного индекса, но не включая его.

    Пример

        String str="Amiyo";
       // prints substring from index 3
       System.out.println("substring is = " + str.substring(3)); // Output "yo'
    
    ответ дан IntelliJ Amiya, с репутацией 49922, 18.11.2015
  • 3 рейтинг

    Я столкнулся с ситуацией, когда мне пришлось удалить не только первый символ (если это был #, но и первый набор символов).

    String myString = ###Hello World может быть отправной точкой, но я бы хотел оставить только Hello World. это можно сделать следующим образом.

    while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
        myString = myString.substring(1, myString.length());
    }
    

    В случае OP замените while на if, и это также работает.

    ответ дан Mathieu Brouwers, с репутацией 419, 31.01.2017
  • 2 рейтинг

    Другое решение, вы можете решить вашу проблему, используя replaceAll с некоторым регулярным выражением ^.{1} ( regex demo ), например:

    String str = "Jamaica";
    int nbr = 1;
    str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
    
    ответ дан YCF_L, с репутацией 31693, 6.08.2017
  • 1 рейтинг

    Моя версия удаления ведущих символов, одного или нескольких. Например, String str1 = "01234", при удалении ведущего 0, результат будет "1234". Для String str2 = "000123" результат снова будет "123". А для String str3 = "000" результатом будет пустая строка: "". Такая функциональность часто полезна при преобразовании числовых строк в числа. Преимущество этого решения по сравнению с регулярным выражением (replaceAll (. , , )) в том, что этот намного быстрее. Это важно при обработке большого количества строк.

     public static String removeLeadingChar(String str, char ch) {
        int idx = 0;
        while ((idx < str.length()) && (str.charAt(idx) == ch))
            idx++;
        return str.substring(idx);
    }
    
    ответ дан Andrushenko Alexander, с репутацией 409, 7.12.2017