我有一个字符串值,它与示例如下所示
data:
130823 ~ Optics-Bottle Detect failure ~ L 0 ~ P 0 | 130824 ~ Optics-Bubble Detect failure ~ L 0 ~ P 0
Format:
ID: 130823
Description: Optics-Bottle Detect failure
Reps: L O
Pending: P 0最后一个字符串基本上应该从连接字符串的每个部分中删除ID,因此通过查看上面的示例数据,所需的输出应该如下所示:
Optics-Bottle Detect failure ~ L 0 ~ P 0 | Optics-Bubble Detect failure ~ L 0 ~ P 0 在一个字符串中可能存在N数。为了举例说明,我只包含一个示例字符串,其中包含两个部分。
**我的Regex
Im使用以下正则表达式,但它只从字符串的第一部分删除ID
var y = x.replace(/\d{6}\s~\s/g, "");发布于 2013-07-02 21:40:20
使用分隔符" | "和" ~ "将字符串拆分为多维数组。然后您可以从id中删除.shift(),因为它是数组中的第一个条目,并将其重新连接到一起:
var y = x.split(" | ").map(function(s) {
s = s.split(" ~ ");
s.shift();
return s.join(" ~ ");
}).join(" | ");或者,在" ~ "之后获取子字符串
var y = x.split(" | ").map(function(s) {
return s.substr(s.indexOf(" ~ ") + 3);
}).join(" | ");或者,更正您的RegExp以考虑空格长度的变化:
var y = x.replace(/\d{6}\s+~\s/g, "");但是,只有在id中始终有6位数字,而在其他地方的RegExp之前没有6位数字时,此~才能工作。例如,如果Reps的值为100000或更多,您的RegExp也会删除它。
一个更好的正则表达式将接受任意数量的数字(大于或小于6),并且只有当它是第一项时,或者在|之后才匹配它
var y = x.replace(/(^|\|\s+)\d+\s+~\s+/g, "$1");发布于 2013-07-02 21:48:40
这里有一个可能的答案,例如
var str = "144515 ~ Commodities-Damaged Reagent Cartridge ~ L 0 ~ P 0 | 144516 ~ Commodities";
var n=/\d{6}\s+~/g;
str = str.replace(n, "");https://stackoverflow.com/questions/17436196
复制相似问题