【发布时间】:2019-10-01 15:32:07
【问题描述】:
我正在编写一个从字符串中获取数字字符串的函数,其工作原理如下:
- 对于字符串中的每个字符,检查它是否是从
0到9的数字 - 如果是,则将其包含在新字符串中
- 一直持续到字符串的末尾。如果字符串是
a0b109mmn5,函数应该返回01095。
function stringToDigit(string) {
if (string.length == 1) {
switch (string) {
case "0":
return 0;
case "0":
return 0;
case "1":
return 1;
case "1":
return 1;
case "2":
return 2;
case "2":
return 2;
case "3":
return 3;
case "3":
return 3;
case "4":
return 4;
case "4":
return 4;
case "5":
return 5;
case "5":
return 5;
case "6":
return 6;
case "6":
return 6;
case "7":
return 7;
case "7":
return 7;
case "8":
return 8;
case "8":
return 8;
case "9":
return 9;
case "9":
return 9;
}
}
}
function stringToNum(string) {
var numString = "";
for (var i = 0; i < string.length; i++) {
if (stringToDigit(string[i])) numString += string[i];
}
return numString;
}
// $.writeln(stringToDigit("0"));
// $.writeln(stringToNum("000"));
console.log(stringToDigit("0")); // gets 0, good
console.log(stringToDigit("00")); // gets undefined, good
console.log(stringToDigit("a")); // gets undefined, good
console.log(stringToNum("a000b1c2d3e4f5g6h7i8j9")); // gets 123456789, not 000123456789, NOT GOOD!
但是,由于某种原因,我不能在结果中包含“0”。我已经尝试过 Visual Studio Code(带有我忘记了名字的控制台插件)和 Adobe ExtendScript Toolkit CC,所以我想知道这是否正是 JavaScript 的工作原理。
【问题讨论】:
-
您有一个带有
stringToDigit(string[i])条件的if语句,0是一个 falsy 值。 -
@Carcigenicate 我也需要这个函数来处理全角数字(用于东亚语言),这不能简单地从字符串中得到。
标签: javascript for-loop string-concatenation