Java Replace Character в совпавшей части строки - PullRequest
0 голосов
/ 02 декабря 2011

Здравствуйте, я пытаюсь изменить любую строку на допустимую переменную, созданную с помощью Uppercore.

Так, например, если у меня есть следующее:

configGlossary:poweredByIcon -> CONFIG_GLOSSARY_POWERED_BY_ICON

124$32SomeSampleString_thatI_have -> SOME_SAMPLE_STRING_THAT_I_HAVE

myJSP -> MY_JSP but my regex produces MY_J_S_P

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

До сих пор я был в состоянии достичь требуемого результата для всего, кроме последнего примера результата, а также для случая, когда в начале строки есть числа.У меня есть следующее регулярное выражение.Это также удалит несколько подчеркиваний, если они есть.

 String regex = "s/^[^a-zA-Z_]+|[^a-zA-Z_0-9]";
 String result = variableName.replaceAll(regex, "_").replaceAll("\\_+", "_");

, поэтому мой вопрос заключается в том, как получить требуемый результат.Есть ли регулярное выражение, которое сделает меня допустимой переменной из любой строки?

И есть ли способ решить последний пример?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Это будет работать для ваших предоставленных образцов:

public static String toVar(String str){
    str = str.replaceAll("^[^a-zA-Z_]+", "");
    str = str.replaceAll("[^a-zA-Z_0-9]+", "_");
    str = str.replaceAll("(?<=[a-z])(?=[A-Z])", "_");
    return str.toUpperCase();
}

Sample

String s;
s = "myJSON";
System.out.println(s + " -> " + toVar(s));

s = "configGlossary:poweredByIcon";
System.out.println(s + " -> " + toVar(s));

s = "124$32SomeSampleString_thatI_have";
System.out.println(s + " -> " + toVar(s));

Выход:

myJSON -> MY_JSON
configGlossary:poweredByIcon -> CONFIG_GLOSSARY_POWERED_BY_ICON
124$32SomeSampleString_thatI_have -> SOME_SAMPLE_STRING_THAT_I_HAVE
1 голос
/ 02 декабря 2011

Я собрал быстрое и (очень) грязное решение в этой сущности . Однако я боюсь, что нет общего решения или библиотеки для вашей проблемы, поскольку ваша задача очень специфична для вашей проблемной области. Надеюсь, что это поможет.

Вывод скрипта следующий:

working for: configGlossary:poweredByIcon, got CONFIG_GLOSSARY_POWERED_BY_ICON
working for: 124$32SomeSampleString_thatI_have, got SOME_SAMPLE_STRING_THAT_I_HAVE
working for: myJSP, got MY_JSP
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...