某個字符的量更換數字是否有可能取代數字與某個字符像'X'
使用正則表達式的量的String? (即替換"test3something8"
與"testXXXsomethingXXXXXXXX"
)?在字符串使用正則表達式一行代碼
我知道我可以使用for循環,但我正在尋找一種儘可能短的(正則表達式)單線解決方案(關於代碼高爾夫挑戰 - 是的,我意識到codegolf-SE,但這是一個普通的Java問題,而不是一個codegolf問題)。
- 我知道如何與一個字符替換位數:
String str = "test3something8".replaceAll("[1-9]", "X");
- >str = "testXsomethingX"
- 我知道如何使用羣體,如果你想使用的匹配,或每場比賽後添加的東西,而不是取代的它:
String str = "test3something8".replaceAll("([1-9])", "$1X");
- >str = "test3Xsomething8X"
- 我知道如何創建
n
量有一定的性格:
int n = 5; String str = new String(new char[n]).replace('\0', 'X');
- >str = "XXXXX"
- 或者是這樣的:
int n = 5; String str = String.format("%1$"+n+"s", "").replace(' ', 'X');
- >str = "XXXXX"
;
我想是這樣的(以下明顯的代碼不能正常工作,但它應該給什麼,我莫名其妙地想實現一個想法 - 最好甚至短了很多):
String str = "test3Xsomething8X"
.replaceAll("([1-9])", new String(new char[new Integer("$1")]).replace('\0', 'X')));
// Result I want it to have: str = "testXXXsomethingXXXXXXXX"
正如我所說的,這上面不起作用,因爲「$ 1」應該被直接使用,所以現在它給人一種
java.lang.NumberFormatException:對於輸入字符串:「$ 1」
TL; DR:沒有人知道一個班輪在某個字符的量替換字符串中的一個數字?
我個人的暗示:不是一切需要定期來解決表達式。一種跡象表明你不會去正則表達式:當你需要其他人來構建它們時。重點是:它將成爲你的代碼,所以你是負責維護/增強它的人。 – GhostCat
@GhostCat我知道,除了一些驗證/格式化之外,我幾乎在實際生產代碼中使用正則表達式。但正如我在問題中提到的,這主要是針對代碼高爾夫挑戰(對於每個人的信息:代碼高爾夫正在儘可能少的字節中解決一定的挑戰)。對於硬編碼或最終使用for循環來說,它可能會更短,但是當我正在進行挑戰時,我主要感興趣的是看到它甚至可以用一行代碼替換具有某個特定字符的數字(因此這個問題)。它比實際使用更出於好奇。 –
然後我會建議你在這裏試試你的運氣:http://codegolf.stackexchange.com/ – GhostCat