我在 JavaScript/Node JS 程式中使用以下規則生成一些有意義的名稱:
輸入:“ tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId ”
預期輸出:“TenancyAccountAccountPublicIdWorkspaceWorkspacePublicIdRemove-userUserPublicId”
規則:
- 將帶有零個或多個下劃線的任何字符替換為非下劃線大寫示例:
x | __*x => X - 如果存在洗掉最后一個 _
這是迄今為止的嘗試,尋找更好的替代方案,如果有的話:
const convertBetterString = (input) => {
const finalString = [];
if (input && input.includes('_')) {
const inputStringSeparation = input.split('_');
if (inputStringSeparation.length > 1) {
if (inputStringSeparation[inputStringSeparation.length - 1] === '') {
inputStringSeparation.splice(inputStringSeparation.length - 1, 1);
}
inputStringSeparation.forEach((val, index) => {
if (val === '' && inputStringSeparation[index 1]) {
const actualString = inputStringSeparation[index 1];
const formattedString = actualString.charAt(0).toUpperCase() actualString.slice(1);
finalString.push(formattedString);
}
});
return finalString.length > 0 ? finalString.join('') : inputStringSeparation.join('');
} else {
return input.charAt(0).toUpperCase() input.slice(1);
}
} else {
return input;
}
}
uj5u.com熱心網友回復:
拆分和切片
const capitalise = str => str.slice(0,1).toUpperCase() str.slice(1); // you can add more tests
const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId"
const newStr = str.split(/_ /)
.map(word => capitalise(word))
.join("")
console.log(newStr)
帶有可選鏈接的正則運算式
const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId_"
const newStr = str.replace(/(?:_ |^)(\w)?/g, (_,letter) => letter?.toUpperCase() ?? "")
console.log(newStr)
解釋
(?:_ |^)不捕獲下劃線或開頭
(\w)? 后跟要捕獲的 0 或 1 個字母
(_,letter) => letter?.toUpperCase() ?? "")忽略匹配項,如果找到則大寫字母,也忽略尾隨下劃線
uj5u.com熱心網友回復:
您可以使用
const str = "tenancy_account__accountPublicId__workspace__workspacePublicId__remove-user__userPublicId__";
const newStr = str
.replace(/(?:^|_)_*([^\s_])|_ $/g, (_, x) => x ? x.toUpperCase() : '')
console.log(newStr);
在/(?:^|_)_*([^\s_])|_ $/g正則運算式中出現的所有比賽
(?:^|_)- 字串的開頭或__*- 零個或多個下劃線([^\s_])- 第 1 組:除空格和_.|- 或者_ $-_字串末尾的一個或多個s。
所述(_, x) => x ? x.toUpperCase() : ''置換除去所有的底線(即使它們是在字串的末尾)并接通第1組的值(x)為大寫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/383620.html
標籤:javascript 正则表达式
上一篇:Array.push()函式在ReactJS中不起作用
下一篇:獲取JS時如何拋出服務器錯誤
