我有一个可能包含帧号的字符串(文件名)。如果存在,则该数字应介于0000到9999之间,并且包括0到9999。我知道如何找到0到9999的匹配项。但是它特别需要找到4位数的匹配项。
所以这不是我想要的方式...
var fileName = "Ext 01_main Concept A0000"
for (var i = 0; i < 9999; i++){
if (fileName.indexOf([i]) != -1) {
var frame = i;
}
}
在这种情况下,帧必须为“ 0000” 有什么建议吗? 谢谢!
答案 0 :(得分:3)
您可以利用正则表达式来测试字符串并提取4位数字:
var fileName = "Ext 01_main Concept A0000"
console.log(fileName.match(/\d{4}/)); // result: [ 0000 ]
如果有问题的4位数字始终出现在字符串的末尾,则您也可以使用$
令牌来确保有问题的4位数字显示为:
var fileName = "Ext 01_main Concept A0000"
console.log(fileName.match(/\d{4}$/)); // result: [ 0000 ]
答案 1 :(得分:-1)
您可以对字符串中的数字进行正则表达式并进行测试:
function f<K extends keyof T>(k: K): T[K]; // call signature same
function f(k: keyof T): T[keyof T] { // impl signature looser
if (k === "a") {
return 5;
} else {
return "5";
}
}
您的代码可能有效,但最坏的情况是它执行9998不必要的检查!
答案 2 :(得分:-1)
您可以使用正则表达式执行此操作:
var fileName = "Ext 01_main Concept A0000";
// The regexp will search for any 4 digits from 0000 to 9999
var match = fileName.match(/[0-9]{4}/g);
// The variable match will have an array with all matching values
// In this case the log should write [ '0000' ]
console.log(match);