[英]Return specific part of string in Javascript
我想操纵以下字符串: 20_hbeu50272359_402_21
所以我只剩下hbeu50272359
有没有办法如何删除那些外部数字? 不确定如何去做。
字符串也可以采用以下格式:
hbeu50272359_402_21
你可以使用split
"20_hbeu50272359_402_21".split('_')[1]
上面根据_
char分割你的字符串,然后使用[1]
选择你想要的部分(在返回的数组中或["20", "hbeu50272359", "402", "21"]
)
这当然会假设您的字符串始终遵循相同的格式。 如果没有,你可以使用regEx匹配看似hbeu
的前缀。 像/(hbeu[0-9]+)/
但我需要更多的信息来提供更好的方法来split
方法
更新:
根据您的更新,您可以执行正则表达式匹配,如:
var stuffWeWant = "20_hbeu50272359_402_21".match(/(hbeu[0-9]+)/)[0];
// this will work regardless of the string before and after hbeu50272359.
(?!\\d)[^_]+
将对两个字符串都有效,并且不需要第二个字符串以hbeu
。
你也可以使用string.replace
函数。 即,替换
一个或多个数字加上开头的下面的下划线符号,
要么
下划线加上一个或多个数字后跟另一个下划线或行锚点的结尾
用空字符串。
> "20_hbeu50272359_402_21".replace(/_\d+(?=_|$)|^\d+_/g, "")
'hbeu50272359'
> "hbeu50272359_402_21".replace(/_\d+(?=_|$)|^\d+_/g, "")
'hbeu50272359'
通常,与使用正则表达式相比,拆分解决方案的性能更好。
*
是贪婪的 ,引擎会尽可能多地重复它,所以正则表达式继续尝试将_
与下一个字符匹配,从而得到匹配
_hbeu50272359_402_21
为了使它不合适,你应该添加一个?
:
_(.*?)_
现在它将匹配第一个_somecharacters_
。
我会使用String.replace()
:
var s = "20_hbeu50272359_402_21";
var part = s.replace(/.*?_(.*?)_.*/, '$1');
搜索模式匹配任何char .*
直到下一次出现_
。 使用不合理的量词?
确保它与字符串中的最后一个_
之前的任何字符都不匹配。 它捕获文本直到下一个_
进入捕获组。 (.*?)
。 然后匹配下一个_
和剩余的字符串。
替换模式使用$1
来解决第一个捕获组的内容并丢弃剩余的匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.