你好,我想修改任何字符串爲大寫Underscore所做的有效變量。Java替換字符串的匹配部分中的字符
因此,舉例來說,如果我有以下幾點:
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
首先我使用一個函數來創建大寫的駝峯字符串下劃線。
到目前爲止,除了最後一個結果示例以及字符串開始處有數字時,我已經能夠實現所需結果。我有以下正則表達式。這將刪除多個下劃線(如果有的話)。
String regex = "s/^[^a-zA-Z_]+|[^a-zA-Z_0-9]";
String result = variableName.replaceAll(regex, "_").replaceAll("\\_+", "_");
所以我的問題是如何產生所需的結果。有沒有一個正則表達式可以讓我成爲任何字符串的有效變量?
有沒有辦法解決最後的樣品?
「是否有正則表達式可以讓我成爲任何字符串的有效變量?」號碼 – FailedDev
好,那麼任何一種方法?樣品?圖書館?我寧願使用經過測試的東西,而不是創建我的東西,然後解決它可能存在的任何可能的問題。 – DArkO
問題在於你的問題中的「任何」。任何東西都可以是字面意思。您需要提供涵蓋全部或更多測試用例的更具體規則。那麼解決方案可能是可行的。 – FailedDev