我想為以下內容創建實時模板createSelector:
export const someSelector = createSelector(getThis, getThat, getSomethingElse, (this, that, somethingElse) =>
$END$
)
我可以用一個引數讓它很好地作業(例如,只有getThis它會導致(this)箭頭函式 args)。
// template text
createSelector($someSelector$, ($variable$) => $END$)
// variables
// expression for "variable":
decapitalize(regularExpression(someSelector, "get", ""))
如上所述,這適用于單個引數,并且幾乎適用于多個引數,除了大寫:
createSelector(getThis, getThat, getSomethingElse, (this, That, SomethingElse) => /* $end$ */)
我試著把整件事都包起來,camelCase但當然逗號和空格不見了。
問題顯然是我一次處理整個字串,因此整個字串通過任何字串格式化函式運行。似乎沒有任何方法可以單獨處理“get”的各個實體。
我嘗試了我真正認為可行的捕獲組:
decapitalize(regularExpression(someSelector, "get(\w )", "$1"))
但這并不能取代任何東西,它只是復制了整個內容:
createSelector(getThis, getThat, (getThis, getThat) => )
有什么辦法可以做到這一點嗎?
更新: 我什至學習了 Groovy 腳本并撰寫了以下內容,它在 groovy 游樂場中作業,但在 WebStorm 中獲得的結果與我上面的最后一個示例相同!
groovyScript("return _1.replaceAll(/get(\w )/) { it[1].uncapitalize() };", someSelector)
uj5u.com熱心網友回復:
這可以通過 RegEx .. 來完成,但 Java 似乎不支持\l替換修飾符(用于\l$1代替$1您的初始regularExpression()代碼)。
實時示例(適用于 PCRE2,例如 PHP):https ://regex101.com/r/6faVqC/1
關于替換修飾符的檔案:https : //www.regular-expressions.info/refreplacecase.html
在任何情況下:這整個事情都由 Java 處理,并且您在雙引號內傳遞 RegEx 模式或 GrovyScript 代碼。因此,任何\符號都需要轉義。
您需要替換get(\w )為get(\\w ).
以下似乎對我來說很好用(someSelectorLive Template 變數在哪里):
groovyScript("return _1.replaceAll(/get(\\w )/) { it[1].uncapitalize() };", someSelector)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340175.html
