我有一個字串,它的長度總是 32:
var str = "34v188d9cefa401f988563fb153xy04b";
現在我需要在以下字符數之后添加減號 (-):
- 第 8 個字符后的第一個減號
- 第 12 個字符后的第二個減號
- 第 16 個字符后的第三個減號
- 第 20 個字符后的第四個減號
輸出應該是:
34v188d9-cefa-401f-9885-63fb153xy04b
到目前為止,我已經嘗試了不同的計算,例如:
str.split('').reduce((a, b, c) => a b (c % 6 === 4 ? '-' : ''), '');
但我沒有得到預期的結果。
uj5u.com熱心網友回復:
您可以使用正則運算式替換:
var str = "34v188d9cefa401f988563fb153xy04b";
var output = str.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, "$1-$2-$3-$4-$5");
console.log(output);
uj5u.com熱心網友回復:
如果你想使用 reduce 你可以做這樣的事情
var str = "34v188d9cefa401f988563fb153xy04b";
const result = str.split('').reduce((res, c, i) => {
const hiphensPositions = [7, 11, 15, 19]
return res c (hiphensPositions.includes(i)?'-':'')
}, '')
console.log(result)
uj5u.com熱心網友回復:
var str = "34v188d9cefa401f988563fb153xy04b";
var a=""
for (let i in str){if (i == 7 || i==11 || i==15 || i ==
19){a = a str[i] "-"} else{a =str[i] }}
應該這樣做。
uj5u.com熱心網友回復:
你可以拼接它們。
const str = "34v188d9cefa401f988563fb153xy04b";
const indices = [8,12,16,20]
let strArr = str.split('')
indices.reverse().forEach(i => strArr.splice(i,0,'-'))
console.log(strArr.join(''))
uj5u.com熱心網友回復:
您可以使用子字串方法
var str = '34v188d9cefa401f988563fb153xy04b';
var newStr =
str.substring(0, 8)
'-'
str.substring(8, 12)
'-'
str.substring(12, 16)
'-'
str.substring(16, 20)
'-'
str.substring(20);
console.log(newStr);
uj5u.com熱心網友回復:
對于這種情況,我有一個 for 回圈演算法。它需要 O(n) 復雜度。代碼示例是這樣的:
const str = "34v188d9cefa401f988563fb153xy04b"
let dashPosition = [8, 12, 16, 20]
for(i=arr.length-1 ; i>=0 ; i--) {
str = str.substr(0, [arr[i]]) '-' str.substr(arr[i])
}
答案是否符合您的要求?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/465363.html
標籤:javascript
上一篇:從字串中獲取路徑名的最佳方法
下一篇:如何使此路由引數起作用?
