Как заменить цифру, заключенную в точку, фигурными скобками в java

У меня есть String details=employee.details.0.name, но я хочу, чтобы было как String details=employee.details[0].name Как проще всего этого добиться? я использую джаву.

 private static String getPath(String path) {
    Pattern p = Pattern.compile( "\\.(\\d+)\\." );
        Matcher m = p.matcher( path );
           while(m.find()){
               path = path.replaceFirst(Pattern.quote("."), m.group(1));
        }
    return path;
}

я пробовал до сих пор, но это не работает

FWIW, фигурные скобки = {}. скобки=[].

dangling else 18.05.2022 02:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предложил записать результат в отдельную строку, иначе это испортит исходную строку (и find).

final String s = "employee.1.details.0.name.5";
        
StringBuilder s1 = new StringBuilder(); // a builder for the result
// pattern: a dot, followed by a number, followed (as lookahead) by either a dot or the end of input
Pattern p = Pattern.compile("[.]([0-9]+)(?=([.]|$))");       
Matcher m = p.matcher(s);

int i = 0; // current position in source string
while (m.find()) {
   s1.append(s.substring(i, m.start()));
   s1.append("[" + m.group(1) + "]");
   i = m.end();
}
s1.append(s.substring(i, s.length())); // copy remaining part

System.err.println(s1.toString());

Строки неизменяемы. Таким образом, запись результата в отдельную строку ничего не меняет.

Jawad El Fou 18.05.2022 04:04

Другие вопросы по теме