src首先,我的檔案中的檔案夾有以下 psr-4 宣告composer.json:
"autoload": {
"psr-4": {
"Src\\": "src/"
}
},
我想構建一個 VSCode 片段,它自動生成位于src檔案夾內的新檔案的命名空間。
到目前為止,我里面有這個php.json:
"Namespace Src": {
"prefix": "ns_src",
"body": [
"namespace ${RELATIVE_FILEPATH};",
],
"description": "Namespace for file routes inside the src folder"
},
以以下檔案為例:
src/MyEntity/Application/MyUseCase.php
期望的結果是:
namespace Src\MyEntity\Application;
現在這就是它回傳給我的內容:
namespace src/MyEntity/Application/MyUseCase.php;
所以我需要解決:
- src 的大寫。
- 將正斜杠替換為
/反斜杠\。 - 洗掉最后一個正斜杠之后的所有內容
/。
我知道必須有一種方法可以使用正則運算式來做到這一點。我已經閱讀了這個類似的問題(VSCODE 片段 PHP 自動填充命名空間),但在閱讀后我還沒有完全掌握它。而且我認為大寫問題可能可以\F在這里解決:
https://www.regular-expressions.info/replacecase.html#:~:text=In the regex \U\w,is not a word character。
這是正確的方法嗎?你能給我關于這個問題的任何提示嗎?
太感謝了。
uj5u.com熱心網友回復:
您可以使用
"Namespace Src": {
"prefix": "ns_src",
"body": [
"namespace ${RELATIVE_FILEPATH/^(?:.*[\\\\\\/])?(src)(?=[\\\\\\/])|[\\\\\\/][^\\\\\\/]*$|([\\\\\\/])/${1: Src}${2: \\\\}/g};",
],
"description": "Namespace for file routes inside the src folder"
},
請參閱正則運算式演示。詳情:
^(?:.*[\\\/])?(src)(?=[\\\/])- 字串開頭 (^),然后是任意零個或多個盡可能多的字符 (.*) 和一個\或/字符 ([\\\/]),然后src捕獲到第 1 組,緊隨其后的是/or\|- 或者[\\\/][^\\\/]*$- 一個\或/字符,然后是零個或多個字符/,\直到字串結尾|- 或者([\\\/])- 第 2 組:a\或/char。
${1: Src}${2: \\\\}替換以這種方式替換:
${1: Src}- 如果第 1 組匹配,則替換為Src${2: \\\\}- 如果第 2 組匹配,則替換為\.
uj5u.com熱心網友回復:
"Namespace Src": {
"prefix": "ns_src",
"body": [
"namespace ${RELATIVE_FILEPATH/^(?:.*[\\\\\\/])?(src)(?=[\\\\\\/])|[\\\\\\/][^\\\\\\/]*$|([\\\\\\/])/${1: Src}${2: \\\\}/g};",
// my version
"namespace ${RELATIVE_FILEPATH/^([^\\\\\\/] )|[\\\\\\/][^\\\\\\/]*$|([\\\\\\/])/${1:/capitalize}${2: \\\\}/g};",
],
"description": "Namespace for file routes inside the src folder"
}
擺脫另一個答案 - 這會捕獲前導目錄并將其大寫,無論它被稱為什么。不清楚您是否希望它src僅適用于檔案夾。
領導目錄: ([^\\\\\\/] )
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/421718.html
標籤:
上一篇:sql查詢WHERE等于或為空
