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);
Преимущество этого состоит в том, что вы не используете механизм регулярных выражений (что не так просто, не используйте принятое решение в цикле).