2011-01-07 42 views
2

我需要更换的整数,随后由短划线的序列中的任何发生和整数然后另一序列,只有整数的第一序列,例如:更换串的所述第二部分与JavaScript和替换()

THIS IS A STRING 2387263-1111 STRING CONTINUES 

将变为:

THIS IS A STRING 2387263 STRING CONTINUES 

我可以使用JavaScript和替换()?

感谢, 吉迪

回答

2

你可以这样做:

str = str.replace(/(\d+)-\d+/,'$1'); 

See it

它取代一组数字后跟一个连字符,然后一组与第一组数字位数。

如果您要更换这种模式的多次出现只使用g修改为:JavaScript代码

str = str.replace(/(\d+)-\d+/g,'$1'); 
2

新的答案 -

是的,据我你的情况,你首先需要的是整个字符串“2387263-1111”匹配使用正则表达式,然后删除该部分跟随按' - ',然后替换原始字符串中的结果。

查看的答案codaddict。我的几乎一样,但他的答案似乎更合适。

OLD答案: -

为什么更换?只需使用分割并获得第一个值。

var str = "2387263-1111"; 
var output = str.split("-")[0]; 
+0

因为这是一个子串,它不是整个字符串。我需要查找那部分 – gidi 2011-01-07 12:02:52

+0

@gidi - 在任何情况下,您将获得该子字符串,然后解析以获得“ - ”之前的第一个值?如果不是,那么您可以给出确切的用例并更新你的问题? – 2011-01-07 12:05:12

+0

对不起,我还不够清楚。我使用字符串编辑了问题,确切的用例。问题是我不知道如何获得所需的子字符串。 – gidi 2011-01-07 12:07:02

1

用户RegExp功能

str = str.replace(new RegExp("-[0-9]+"), " "); 
1

不是一个真正的新的答案,只是除了codaddict。不知道JScript的正则表达式
一切都好,但我认为它使用扩展的正则表达式(如果没有,忘记这一点)。

如果您需要boundry条件验证,你可以做这样的事情:
str = str.replace(/((^|\s)\d+)-\d+(?=\s|$)/g, '$1');

这将防止匹配这种类型的事情:
A STRING 2387263-1111STRING CONTINUES
A STRING2387263-1111 STRING CONTINUES
A STRING2387263-1111STRING CONTINUES