如何在javascript中使用多个规则拆分字符串
例如,我有以下字符串:如何在javascript中使用多个规则拆分字符串,javascript,string,split,Javascript,String,Split,例如,我有以下字符串: str = "my name is john#doe oh.yeh"; 我寻求的最终结果是这个数组: strArr = ['my','name','is','john','&#doe','oh','&yeh']; 这意味着有两条规则适用: 在每个空格“”后拆分(我知道怎么做) 如果有特殊字符(“.”或“#”)也可以拆分,但在带有特殊字符的单词前添加字符“&”。 我知道我可以用strArr=str.split(“”)作为第一条规则。但是我该怎么做另一个把
str = "my name is john#doe oh.yeh";
我寻求的最终结果是这个数组:
strArr = ['my','name','is','john','&#doe','oh','&yeh'];
这意味着有两条规则适用:
2) 遍历数组,找到#或时在数组成员中再次拆分
3) 再次遍历数组,找到
str.replace(“#“,”“
和str.replace(“.”,“&”)
时使用split()方法。这就是你需要的:
嗯。我看到了,你找到了,我想:
1) 首先使用拆分到空格2) 遍历数组,找到#或时在数组成员中再次拆分
3) 再次遍历数组,并假设结果应该是
'&doe'
,而不是'&doe'
,一个简单的解决方案是将所有
和
替换为
按空格分割的
,和
:
strArr = str.replace(/[.#]/g, ' &').split(/\s+/)
/\s+/
匹配连续的空格,而不仅仅是一个空格
如果结果应该是'doe'
和'&.yeah'
使用相同的正则表达式并添加捕获:
strArr = str.replace(/([.#])/g, ' &$1').split(/\s+/)
假设结果应该是'&doe'
而不是'&doe'
,一个简单的解决方案是将所有
和
替换为按空格分割的&
:
strArr = str.replace(/[.#]/g, ' &').split(/\s+/)
/\s+/
匹配连续的空格,而不仅仅是一个空格
如果结果应该是'doe'
和'&.yeah'
使用相同的正则表达式并添加捕获:
strArr = str.replace(/([.#])/g, ' &$1').split(/\s+/)
必须使用正则表达式,才能同时匹配所有特殊字符。我想你说的“特别”是指“没有字母”
var模式=/([^a-z]?)[a-z]+//gi;//图案
var str=“我的名字是约翰#多伊哦,耶”//输入字符串
var strArr=[],匹配;//输出数组,临时变量
虽然((match=pattern.exec(str))!==null){/您必须使用正则表达式,以便一次匹配所有特殊字符。通过“特殊”,我假定您的意思是“没有字母”
var pattern=/([^a-z]?)[a-z]+//gi;//pattern
var str=“我的名字是john#doe oh.yeh”//输入字符串
var strArr=[],match;//输出数组,临时变量
而((match=pattern.exec(str))!==null){/我认为split()和replace()的组合是您需要的:
str = "my name is john#doe oh.yeh";
strArr = str.replace('\W',' &');
strArr = strArr.split(' ');
这应该与您所要求的接近。我认为split()和replace()的组合是您想要的:
str = "my name is john#doe oh.yeh";
strArr = str.replace('\W',' &');
strArr = strArr.split(' ');
这应该与您所要求的接近。这是有效的:
array = string.replace(/#|\./g, ' &$&').split(' ');
请看这里的演示:此功能:
array = string.replace(/#|\./g, ' &$&').split(' ');
看看这里的演示:应该是'和#doe'
还是'和doe'
?你有'和
,而不是'和.yeh'
。你希望有那些“特殊字符”吗作为输入的一部分,或者它们中的任何一个都不可能出现一次?可能重复的@outis你错过了第二部分了吗?@RobW:没有,但这确实是两个问题,第一个问题已经被问过了。目前正在寻找第二个问题中的另一个。应该是”和#doe'
还是'&doe'
?你有'&yeh'
而不是“&.yeh”
。你是否希望这些“特殊字符”作为输入的一部分,或者它们中的任何一个都不会出现一次?可能是@outis的重复。你错过了第二部分了吗?@RobW:没有,但这确实是两个问题,第一个问题已经被问过了。目前正在寻找第二个问题中的另一个。