Java: удалить все символы после точки

Я получил быстрый вопрос, я получил следующий код

String chapterNumber = "14.2.1";

Как я могу добиться, чтобы получить строку вроде следующего из моего "chapterNumber"

String mainChapterNumber = "14";

Изменить: я хочу, чтобы все числа в int/String (не имеет значения для меня) до первой точки

8 ответов

Решение

Если это только первая часть входной строки, которую вы хотите, вы должны сделать

String mainChapterNumber = chapterNumber.split("\\.", 2)[0];

Второй аргумент split (2) указывает, что мы должны разбивать только на первое вхождение .; это быстрее, чем расщепление на все случаи . что случилось бы, если бы мы не предоставили этот второй аргумент.


Соответствующая документация

  • split

Просто используйте следующее:

String mainChapterNum = chapterNumber.substring(0, chapterNumber.indexOf("."));

Это вернет подстроку вашего текущего номера главы, начиная с первого символа, который помещен в индекс номер 0 и заканчивается до первого появления "."

String chapterNumber = "1.2.1";
int index = chapterNumber.indexOf(".");
String mainChapterNumber = chapterNumber.substring(0,index);

Есть несколько способов сделать это. Самый простой, который я бы порекомендовал, это использовать подстроку и indexOf: Вот так:

String result = chapterNumber.substring(0, chapterNumber.indexOf("."));

Другой способ сделать это будет так:

String result = chapterNumber.split("\\.")[0];
String mainChapterNumber = chapterNumber.substring(0,chapterNumber.indexOf("."));

Поскольку у нас нет никаких доказательств того, что вы на самом деле пытаетесь что-то сделать, я сделаю предложение вместо того, чтобы давать вам код.

Попробуйте поиграть с индексами вашей строки. Найдите индекс первой точки и затем используйте substring метод, чтобы сохранить подстроку между источником и этим вхождением.

Попробуйте как ниже...

String chapterNumber = "1.2.1";
String[] getdt = chapterNumber.split("\\.");
String mainChapterNumber = getdt[0];

Для справки, другое решение, использующее сплиттер Guava:

String mainChapterNumber = Iterables.get(Splitter.on('.').split(chapterNumber), 0);

Преимущество этого состоит в том, что вы не используете механизм регулярных выражений (что не так просто, не используйте принятое решение в цикле).

Другие вопросы по тегам