首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用javascript regex从字符串中删除字符

如何使用javascript regex从字符串中删除字符
EN

Stack Overflow用户
提问于 2013-07-02 21:33:04
回答 2查看 9.6K关注 0票数 4

我有一个字符串值,它与示例如下所示

代码语言:javascript
复制
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,因此通过查看上面的示例数据,所需的输出应该如下所示:

代码语言:javascript
复制
 Optics-Bottle Detect failure ~ L 0 ~ P 0 | Optics-Bubble Detect failure ~ L 0 ~ P 0 

在一个字符串中可能存在N数。为了举例说明,我只包含一个示例字符串,其中包含两个部分。

**我的Regex

Im使用以下正则表达式,但它只从字符串的第一部分删除ID

代码语言:javascript
复制
var y = x.replace(/\d{6}\s~\s/g, "");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-02 21:40:20

使用分隔符" | "" ~ "将字符串拆分为多维数组。然后您可以从id中删除.shift(),因为它是数组中的第一个条目,并将其重新连接到一起:

代码语言:javascript
复制
var y = x.split(" | ").map(function(s) {
    s = s.split(" ~ ");
    s.shift();
    return s.join(" ~ ");
}).join(" | ");

或者,在" ~ "之后获取子字符串

代码语言:javascript
复制
var y = x.split(" | ").map(function(s) {
    return s.substr(s.indexOf(" ~ ") + 3);
}).join(" | ");

或者,更正您的RegExp以考虑空格长度的变化:

代码语言:javascript
复制
var y = x.replace(/\d{6}\s+~\s/g, "");

但是,只有在id中始终有6位数字,而在其他地方的RegExp之前没有6位数字时,此~才能工作。例如,如果Reps的值为100000或更多,您的RegExp也会删除它。

一个更好的正则表达式将接受任意数量的数字(大于或小于6),并且只有当它是第一项时,或者在|之后才匹配它

代码语言:javascript
复制
var y = x.replace(/(^|\|\s+)\d+\s+~\s+/g, "$1");
票数 1
EN

Stack Overflow用户

发布于 2013-07-02 21:48:40

这里有一个可能的答案,例如

代码语言:javascript
复制
var str = "144515 ~ Commodities-Damaged Reagent Cartridge ~ L 0 ~ P 0 | 144516 ~ Commodities";
var n=/\d{6}\s+~/g;
str = str.replace(n, "");
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17436196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档