试图从javascript中的字符串中获取最后一位数字。
请注意,我不是要获取字符串的最后一个字符,而是最后一个数字作为数字
例如:
lastDigit("MA01A"); // returns 1
lastDigit("MA01"); // returns 1
lastDigit("1"); // returns 1
lastDigit("1MABC"); // returns 1
lastDigit("MABC"); // returns undefined
我如何得到它?
答案 0 :(得分:1)
假设字符串的末尾可能包含非数字字符,则可以反向遍历字符串并返回遇到的第一个数字,否则返回null
function getLatestDigit(text) {
for (var i = text.length - 1; i >= 0; i--) {
if (!isNaN(text.charAt(i))) return text.charAt(i);
}
return null;
}
console.log(getLatestDigit("MA01"));
console.log(getLatestDigit("MA12aaaaa"));
console.log(getLatestDigit("NoNumbersHere"));
答案 1 :(得分:1)
这里是不使用for循环的版本。有两个版本:一个短版本,返回一个字符串,一个稍长版本,返回一个数字,以防您也需要。
function lastDigit(str) {
// Remove all non-digits from the string and return the last
// character
return str.replace(/[^\d]*/g, '').slice(-1) || undefined;
}
function lastDigitAsNumber(str) {
// Remove all non-digits from the string
const digit = str.replace(/[^\d]*/g, '').slice(-1)
// Parse the last digit as number (this will be 0 for ''
const number = Number(digit)
// Return accordingly
return digit.length > 0 ? number : undefined;
}
console.log(lastDigit("MA01A")); // returns '1'
console.log(lastDigit("MA01")); // returns '1'
console.log(lastDigit("1")); // returns '1'
console.log(lastDigit("1MABC")); // returns '1'
console.log(lastDigit("MABC")); // returns undefined
console.log(lastDigitAsNumber("MA01A")); // returns 1
console.log(lastDigitAsNumber("MA01")); // returns 1
console.log(lastDigitAsNumber("1")); // returns 1
console.log(lastDigitAsNumber("1MABC")); // returns 1
console.log(lastDigitAsNumber("MABC")); // returns undefined
答案 2 :(得分:0)
尝试一下。...
var source="MA01";
var lastNum = source.replace(/.*?(\d+)[^\d]*$/,'$1')
alert(lastNum);
答案 3 :(得分:0)
var source = "MA01",
lastNum = source.match(/(\d+)(?!.*\d)/)[0];
alert(lastNum);