从用下划线分隔的文本中获取特定字符串

get particular strings from a text that separated by underscore

本文关键字:获取 字符串 文本 下划线 分隔      更新时间:2023-09-26

我正试图从下面的文本中获取特定的字符串:

var str = "001AN_LAST_BRANCH_HYB_1hhhhh5_PBTsd_JENKIN.bin";

从这里我必须得到以下字符串:"LAST"、"BRANCH"answers"JENKIN"。我用下面的代码得到了"JENKIN";

var result = str.substr(str.lastIndexOf("_") +1);

它会得到"JENKIN.bin"的结果。我只需要"JENKIN"。此外,输入字符串str有时也包含此".bin"字符串。

使用substring()函数,您可以通过定义开始和结束位置来提取所需的文本。您已经找到了str.lastIndexOf("_") +1的起始位置,将str.indexOf(".")的结束位置添加到substring()函数中会得到所需的结果。

var result = str.substring(str.lastIndexOf("_") +1,str.indexOf("."));

这取决于模式的可预测性

var parts = str.replace(/'..+/, '').split('_');

然后零件[0]是001AN,零件[1]是LAST,等等

您可以使用String.prototype.split通过给定的分隔符将字符串拆分为数组:

var str = '001AN_LAST_BRANCH_HYB_1hhhhh5_PBTsd_JENKIN.bin';
var parts = str.split('_'); 
// parts is ['001AN', 'LAST', 'BRANCH', 'HYB', '1hhhhh5', 'PBTsd', 'JENKIN.bin'];
document.body.innerText = parts[1] + ", " + parts[2] + " and " + parts[6].split('.')[0];

你可以这样做:

var re = /^[^_]*_([^_]*)_([^_]*)_.*_([^.]*)'..*$/;
var str = "001AN_LAST_BRANCH_HYB_1hhhhh5_PBTsd_JENKIN.bin";
var matches = re.exec(str);
console.log(matches[1]); // LAST
console.log(matches[2]); // BRANCH
console.log(matches[3]); // JENKIN

通过这种方式,您可以随时重用RegExp,它也可以用于其他语言。

尝试使用String.prototype.match()RegExp /([A-Z])+(?=_B|_H|'.)/g来匹配后面跟有"_B""_H""." 的任意数量的大写字母

var str = "001AN_LAST_BRANCH_HYB_1hhhhh5_PBTsd_JENKIN.bin";
var res = str.match(/([A-Z])+(?=_B|_H|'.)/g);
console.log(res)

我不知道你为什么要这样做,但这个例子会很有帮助。

最好写下你想要的东西。

str = '001AN_LAST_BRANCH_HYB_1hhhhh5_PBTsd_JENKIN.bin'
find = ['LAST', 'BRANCH', 'JENKINS']
found = []
for item in find:
    if item in str:
        found.append(item)
print found # ['LAST', 'BRANCH']