目标:
在javascript中从“MARSSTANDGATA132TR”中检索值“2TR”
需要检索数字2的索引号。
问题:
只是不知道做什么是正确的语法?
的信息:
*值“TR”始终位于单词的末尾
*“TR”的数字“2”总是在变化。它只是一个数字,没有两个或三个数字
*地址和地址编号总是在变化
*当您执行正则表达式代码并且在单词的末尾找不到TR时,则无法检索请求的结果。
function myFunction() {
var str = "MARSSTANDGATA132TR";
var n = str.search("TR");
document.getElementById("demo").innerHTML = n;
}
<button onclick="myFunction()">Test</button>
<p id="demo"></p>
谢谢!
答案 0 :(得分:2)
由于TR总是在刺痛的结束,因此你不需要在这里使用正则表达式。
取最后两个符号,检查它是否为TR,如果是 - 从字符串末尾取第三个符号 - 否则 - 执行错误处理:
var str = "MARSSTANDGATA132TR";
if (str.slice(-2) == 'TR') {
console.log(''+str.slice(-3, -2) + ' and index is ' + (str.length - 3));
} else {
console.log('no TR');
}
答案 1 :(得分:0)
或者,如果您想使用索引来找到正确的tr和num idx:
let str = "MARSSTANDGATA132TR";
let tr = str.search("TR"), numIdx;
if (tr !== -1) {
numIdx = str[tr -1];
tr = str.substr(tr, tr + 1);
} else {
alert('no TR');
}
console.log(tr);
console.log(numIdx)
或者如果字符串包含多个TR,那么您需要确保它确实是正确的。
let str = "MARSS**TR**ANDGATA132**TR**";
let trIdx = 0, tr, numIdx;
let findTrIdx = (str) => {
let tmpIdx = str.search('TR');
if (!parseInt(str[tmpIdx - 1])) {
let newStr = str.substr(tmpIdx + 2, str.length -1);
tmpIdx = tmpIdx + 2;
findTrIdx(newStr);
}
trIdx += tmpIdx;
return trIdx;
}
trIdx = findTrIdx(str);
if (trIdx !== -1) {
numIdx = str[trIdx -1];
tr = str.substr(trIdx, trIdx + 1);
} else {
alert('no TR');
}
console.log(tr);
console.log(numIdx)