我做了一個函式來洗掉字串的最后一部分,它總是從_并獲取整數,但我得到的只是文本部分而不是整數
如何做到這一點?
function splitLast(arg) {
if (arg.includes(".") && arg.includes("_")) {
return parseFloat(arg.split("_").pop())
} else if (arg.includes(".") != true && arg.includes("_")) {
return parseInt( arg.split("_").pop())
} else {
throw "Arguments passed does not contain the valid result characters or isnt a required Datatype for thefunction"
}
}
console.log(splitLast("22_no"), 'should be 22')
console.log(splitLast("22.1_no"), 'should be 22.1')
uj5u.com熱心網友回復:
UPD:更好的解決方案
您可以在parseFloat()不進行額外檢查和字串決議的情況下使用函式(它會為您完成所有作業):
function splitLast(arg) {
if (isNaN(arg.trim()[0])) {
throw new Error('argument is not valid')
}
return parseFloat(arg)
}
console.log(splitLast("22_no"), 'should be 22')
console.log(splitLast("22.1_no"), 'should be 22.1')
console.log(splitLast("a22.1_no"), 'should throw')
console.log(splitLast(" a22.1_no"), 'should throw')
isNaN()需要檢查,因為parseFloat(string)回傳:
- 從給定字串決議的浮點數(這正是您需要的)
- NaN 當第一個非空白字符無法轉換為數字時(這是一個邊緣情況,但我們應該知道它)
函式回傳或
舊解決方案:
可能,您必須使用該shift()方法而不是pop().
pop() 方法從陣列中洗掉最后一個元素并回傳該元素。此方法更改陣列的長度。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop
shift() 方法從陣列中移除第一個元素并回傳移除的元素。此方法更改陣列的長度。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
function splitLast(arg) {
if (arg.includes(".") && arg.includes("_")) {
return parseFloat(arg.split("_").shift())
} else if (arg.includes(".") != true && arg.includes("_")) {
return parseInt(arg.split("_").shift())
} else {
throw "Arguments passed does not contain the valid result characters or isnt a required Datatype for thefunction"
}
}
console.log(splitLast("22_no"), 'should be 22')
console.log(splitLast("22.1_no"), 'should be 22.1')
uj5u.com熱心網友回復:
您可以使用正則運算式和.replace:
function splitLast(value) {
return value.replace(/_.*$/, '');
}
console.log(splitLast("22_no"), 'should be 22')
console.log(splitLast("22.1_no"), 'should be 22.1')
uj5u.com熱心網友回復:
您可以使用它從字串中洗掉文本,只保留帶有下劃線的數字。
var ret = "22.1_no";
var str = ret.replace(/[^0-9\.] /g, "");
console.log("_" str);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403626.html
標籤:
