我在這里問了一個類似的問題TypeScript: How to replace a specific number in a string, 然后更新它的值?
非常感謝那里的答案。它回答了我的問題。
我遇到了一個新問題。認為在提及舊問題時提出新問題更有幫助。
我有一列充滿了 10 位字串。
有時整個 10 位數字僅包含數值(例如3345678901),但有時包含破折號(例如3345678---)
我希望能夠:
- 輸入索引號 X
- 在字串中找到對應的數字
- 向/從該數字中添加或減去特定數字 A 以更新字串
- 更新字串
示例 1(全部為數字):3345678901
- 輸入索引號“4”
- 對應的數字是
6 - 將該數字增加 2 至
8 - 將字串更新為
3345878901
示例 2(數字和非數字): 3345678---
- 輸入索引號“4”
- 對應的數字是
6 - 將該數字增加 2 至
8 - 將字串更新為
3345878---
示例 3(數字和非數字):3345678---
- 輸入索引號“7”
- 對應的值為
- - 將該數字增加(或者更確切地說,更新) 2 到
2 - 將字串更新為
33458782--
例如 1,我知道我可以執行以下操作(正如 OG 帖子的貢獻者所指出的那樣):
const givenStr = "3345678901";
let givenStrArray = givenStr.split('').map(Number);
const inputIndex = 4;
const increaseAmount = 2;
givenStrNumber = increaseAmount
console.log(givenStrNumber);
但是,我該如何處理示例 2 和 3?既然涉及字串'-'?在這種情況下map(Number),會導致 Null 值破壞代碼。
任何幫助將不勝感激!
uj5u.com熱心網友回復:
檢查NaN. 這是一個小片段,會給你一個提示:
// ...
// ...
const increment = 2;
let givenStrArray =
givenStr
.split('')
.map((digiit) => isNaN(digit) ? increment : Number(digit increment);
// ...
// ...
uj5u.com熱心網友回復:
這應該可以解決問題
let str = '3345678---'
let NumericStrArray = str.split('').map(x => Number.isNaN(Number(x)) ? x: Number(x))
let ipIndex = 7
let incAmount = 2
let val = NumericStrArray[ipIndex]
NumericStrArray[ipIndex] = typeof val === 'string' ? incAmount : val incAmount
let result = NumericStrArray.join('')
ps:使用 global 不是一個好習慣,isNaN如上面/下面的不同答案所示
如果可能,我們應該Number.isNaN()在所有情況下使用。
帶有解釋的 MDN 檔案
uj5u.com熱心網友回復:
這是一個簡單的小片段。拆開刺痛,映射每個專案,當我們找到需要更新的索引時,我們更新并回傳它,然后將它們重新組合在一起。
此處使用了多個條件三元運算子,您可以在此處了解有關它們如何作業的更多資訊:條件(三元)運算子
const givenStr = "334567----",
inputIndex = 6,
increaseAmount = 2
let givenNumber = givenStr
.split('')
.map((v,i) => i === inputIndex ? isNaN(v) ? increaseAmount : v increaseAmount : v)
.join('')
console.log(givenNumber);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460472.html
標籤:javascript 打字稿
上一篇:從三個陣列中獲取第一個元素并將它們放入自己的陣列中,然后在javascript中對第二個元素執行相同操作,依此類推
