var str = "java javascript 'core php' 'core java' css";
str.split(' ');
这将结果作为数组['java' ,'javascript', 'core', 'php', 'core', 'java','css']
但是我想要结果['java', 'java' ,'javascript', 'core php', 'core java', css]
单引号元素作为javascript中的一个字符串
答案 0 :(得分:0)
肯定不是最漂亮的方法,但是它是有效的。
var str = "java javascript 'core php' 'core java' css";
var resu = [];
var index = 0;
var coteOpen = false;
for (var i = 0; i < str.length; i++)
{
if(str.charAt(i) == '\'')
{
coteOpen = !coteOpen;
}
else if(str.charAt(i) == ' ' && !coteOpen)
{
index++
}
else
{
if(resu[index] == null)
resu[index] = str.charAt(i)
else
resu[index] += str.charAt(i)
}
}
console.log(resu);
答案 1 :(得分:0)
@Kvasir提供了一个答案,但是如果您不想逐个字母地遍历整个字符串,这是另一个选择:
let str = "java javascript 'core php' 'core java' css"
let index = 0
do {
index = str.indexOf('\'', index)
if (index != -1) {
let inStep = index
let outStep = str.indexOf('\'',index+1)
if (outStep != -1) {
index = outStep
let string = str.substring(inStep, outStep+1)
str = str.replace(string, string.replace(/\'/g, '').replace(/ /g, '-'))
} else break
}
} while (str.indexOf('\'',index+1) != -1)
let result = str.split(' ').map(i => i.replace(/-/g,' '))
答案 2 :(得分:0)
好吧,因为正如Flame所提到的,\'字符包含在拆分出来的单词中,所以在拆分之后循环遍历数组并查找该字符可能更容易:
var stri = "wat you say 'there is' no peace in 'the world'";
var wrds = stri.split(' ');
var newwrds = [];
var i,j;
for (i=0, j=0;i<wrds.length;i++){
if (wrds[i].charAt(0) == '\''){
newwrds[j] = wrds[i].slice(1) + " " + wrds[i+1].slice(0,-1);
i++;
j++;
} else {
newwrds[j] = wrds[i];
j++;
}
}
输出为['what', 'you', 'say', 'there is', 'no', 'peace', 'in', 'the world']
如果需要,可以添加一个do..while循环,以允许两个单词以上的项目。