#java #substring #replaceall
#java #подстрока #замените все
Вопрос:
Чтобы удалить домен и разрешить максимальную цифру до 10, я использую это условие :
if (sender.indexOf('@') != -1 ) {
sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
}
ввод вывода
stackoverflow@gmail.com -> stackoverf
Теперь мне нужно добавить еще одно условие, если какое-либо ‘.’ присутствует между ними, игнорируйте это ‘.’. Например — stack.overflow@gmail.com -> stackoverf
Для этого я пытаюсь так :
if (sender.indexOf('@') != -1 ) {
if(sender.contains(".") {
sender.replaceAll("\.","");
sender = sender.substring(0, Math.min(sender.indexOf("@"), 10));
}
}
Подходит ли этот подход или какой-то лучший подход, который мы можем реализовать.
Спасибо за ваши ответы.
Комментарии:
1. Я бы сказал, что вы можете избавиться от этого
if(sender.contains(".")
. Это неreplaceAll
займет больше времени, если вы вызовете его без предварительной проверки (я бы сказал, что добавление одного вызова метода сделает его медленнее, если что-нибудь)2.
sender.replaceAll("\.","");
Вам нужно переназначить результат, чтобыsender
он работал. Или вы делаете это на одном дыхании:sender = sender.replaceAll("\.","").substring(0, Math.min(sender.indexOf("@"), 10));
3. Хорошее решение, хотя
sender = sender.replace(".","");
и вы полагаетесь на@
присутствие. Вы могли бы сделатьsender = sender.replaceFirst("@.*$", "").replace(".", "").replaceFirst("^(.{10}).*$", "$1");
4. Большое вам спасибо, предложенное решение работает 🙂