How to split and a string and append something in between in Java

Viewed 553

I have a String extension_user and a code eaba848f6a9240f3ba5a5241a317ecc8

I am writing a java code to append extension_eaba848f6a9240f3ba5a5241a317ecc8_user.

I amn using regular expression to break extension_ from the string and append with code and rest of the part or is there any other way?

public static void main(String []args){
        String code = "eaba848f6a9240f3ba5a5241a317ecc8";
        String value = "extension_user";
        
        for (String retval: value.split("extension_")) {
         System.out.println(retval);
      }
        
     }
5 Answers

Check out String.split() method, you may want to do something like

String[] array = extension_user.split("_");
return array[0] + "_" + code + "_" + array[1];
public String getExtensionStr(){
   String code = "eaba848f6a9240f3ba5a5241a317ecc8";
   return "extension_" + code + "_user";
}

Won't this work for you?

After reading your comments

String extStr = "extension_user";
String[] sList = extStr.split("_");
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String finalStr = sList[0]+ "_" + code + sList[1];

This should work. You can rename the methods or variables as you see fit.

String userString = "extension_user";
String code = "eaba848f6a9240f3ba5a5241a317ecc8";
String newString = insert(userString, code);
System.out.println(newString);

prints

extension_eaba848f6a9240f3ba5a5241a317ecc8_user

The method - just use replace


public static String insert(String original, String code) {
    return  original.replace("_", "_" + code + "_");
}

You could also use String#replaceFirst but in that case, the first argument is a regular expression which in some cases may have a special meaning.

Here is a dynamic string insert method:

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;
  }
}

Here is a better one line approach,

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"
Related