Как разделить и строку и добавить что-то среднее в Java

#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