#java
#java
Вопрос:
У меня есть String extension_user и код eaba848f6a9240f3ba5a5241a317ecc8
Я пишу Java-код для добавления extension_eaba848f6a9240f3ba5a5241a317ecc8_user.
Я не использую регулярное выражение, чтобы отделить extension_ от строки и добавить код и остальную часть части или есть какой-либо другой способ?
public static void main(String []args){
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String value = "extension_user";
for (String retval: value.split("extension_")) {
System.out.println(retval);
}
}
Комментарии:
1. Что вы пробовали до сих пор? Это выглядит как простая задача для
String.split()
… Просто опубликуйте свой код.2. опубликовано в самом вопросе
3. Вам не нужен цикл, а просто разделение по подчеркиванию… Смотрите ответ, данный @TomBrito
Ответ №1:
Проверьте метод String.split(), возможно, вы захотите сделать что-то вроде
String[] array = extension_user.split("_");
return array[0] "_" code "_" array[1];
Комментарии:
1. Я предлагаю использовать
String.join("_", array[0], code, array[1])
для добавления символов подчеркивания2. Разве OP не хочет
extension_eaba848f6a9240f3ba5a5241a317ecc8_user
использовать в качестве конечной строки? Если это так, этот ответ не добавляет подчеркивания.
Ответ №2:
public String getExtensionStr(){
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
return "extension_" code "_user";
}
Разве это не сработает для вас?
После прочтения ваших комментариев
String extStr = "extension_user";
String[] sList = extStr.split("_");
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String finalStr = sList[0] "_" code sList[1];
Комментарии:
1. Может
"extension"
быть, и"user"
просто манекены для динамического контента… Тогда это вообще НЕ сработало бы, и в настоящее время этот метод всегда будет выдавать один и тот же результат, так зачем делать это методом?
Ответ №3:
Это должно сработать. Вы можете переименовывать методы или переменные по своему усмотрению.
String userString = "extension_user";
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String newString = insert(userString, code);
System.out.println(newString);
С принтами
extension_eaba848f6a9240f3ba5a5241a317ecc8_user
Метод — просто используйте replace
public static String insert(String original, String code) {
return original.replace("_", "_" code "_");
}
Вы также можете использовать String#replaceFirst, но в этом случае первым аргументом является регулярное выражение, которое в некоторых случаях может иметь особое значение.
Ответ №4:
Вот метод динамической вставки строки:
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StringInsert {
public static void main(String[] args) {
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String value = "extension_user";
System.out.println(insertValues(value, "_", code));
}
public static String insertValues(String str, String delim, String... values) {
List<String> tokens = Stream.of(str.split(delim))
.collect(Collectors.toCollection(ArrayList::new));
return String.join(delim, insertValues(tokens, values));
}
public static <E> List<E> insertValues(List<E> list, E... values) {
ListIterator<E> listIterator = list.listIterator();
Iterator<E> valueIterator = Stream.of(values).iterator();
while (listIterator.hasNext()) {
listIterator.next();
if (valueIterator.hasNext()) {
listIterator.add(valueIterator.next());
}
}
return list;
}
}
Ответ №5:
Вот лучший однострочный подход,
String value = "extension_bla_bla"; OR "extension_bla";
String ID ="whateveryourIDis";
String updatedValue = value.replace("extension_", "extension_" ID "_");
return updatedValue;
This is your output "extension_whateveryourIDis_bla_bla"
Комментарии:
1. это было наиболее эффективно
2. или даже использовать StringBuilder.insert