我想使用正則表達式以下問題:正則表達式替換2個字符與一個
SOME_RANDOM_TEXT
應轉換爲:
someRandomText
如此,_(任何字符)應該用大寫字母替換。我發現類似的東西,使用tool:
_\w and $&
如何讓僅從更換的第二個字母?有什麼建議?謝謝。
我想使用正則表達式以下問題:正則表達式替換2個字符與一個
SOME_RANDOM_TEXT
應轉換爲:
someRandomText
如此,_(任何字符)應該用大寫字母替換。我發現類似的東西,使用tool:
_\w and $&
如何讓僅從更換的第二個字母?有什麼建議?謝謝。
你也可以寫一個簡單的方法來做到這一點。它更復雜,但更優化:
public static String toCamelCase(String value) {
value = value.toLowerCase();
byte[] source = value.getBytes();
int maxLen = source.length;
byte[] target = new byte[maxLen];
int targetIndex = 0;
for (int sourceIndex = 0; sourceIndex < maxLen; sourceIndex++) {
byte c = source[sourceIndex];
if (c == '_') {
if (sourceIndex < maxLen - 1)
source[sourceIndex + 1] = (byte) Character.toUpperCase(source[sourceIndex + 1]);
continue;
}
target[targetIndex++] = source[sourceIndex];
}
return new String(target, 0, targetIndex);
}
我喜歡阿帕奇公共圖書館,但有時它的好,知道它是如何工作的,並能編寫一些特定的代碼,像這樣的工作。
問題是不支持從小寫轉換爲大寫的情況Java.util.regex.Pattern 這意味着您需要按照Brian的建議以編程方式進行轉換。另請參閱this thread
某些語言具有標誌(例如\ u將相鄰的反向引用轉換爲小寫),可以修改反向引用,我不知道在java中是否有這種情況 –
遺憾的是不是 –
如果正則表達式是一個選項,會在正則表達式和替換字符串中的$ 1中使用_([A-Za-z])或'_(\ p {L})'。圓括號捕獲組#1中的字母(假設它是第一組parens),'$ 1'作爲替換字符串中該組的佔位符。 ('\ w'是不正確的,因爲它除了字母外還匹配數字和下劃線,'\ p {L}'比'[A-Za-z]更正確,因爲它匹配Unicode字母,而不僅僅是ASCII。 ) –