使用indexof方法,我可以找到字符串中的值

时间:2018-10-29 16:43:50

标签: javascript

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中的一个字符串

3 个答案:

答案 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循环,以允许两个单词以上的项目。