使用不带“ split”功能的JS在单词上分割句子

时间:2018-10-06 07:02:32

标签: javascript

我需要使用不带'split'功能的JavaScript对单词进行句子拆分,并使用Alert函数返回每个单词。所以,我有这段代码,但它不起作用。我是编程的新手,请帮我解决这个问题。

var str = 'Lorem Ipsum Lorem Ipsum';
var new_str = ' ';
for(var i=0;i<str.length;i++) {
    if(str == new_str) {
        alert( new_str );
        new_str = '';
    }
}

7 个答案:

答案 0 :(得分:2)

更简洁的版本:

var str = 'Lorem Ipsum Lorem Ipsum';

var word = '', result = []

for (const char of str) {
  word = char == ' ' ? (result.push(word), "") : (word + char);
}

result.push(word);

console.log(result)

我们使用的是for的简短版本,主要是三元运算符来处理逻辑,何时将单词压入结果数组准备就绪以及何时继续连接。

另一个没有最后一个result.push(word)的版本如下所示:

var str = 'Lorem Ipsum Lorem Ipsum';
var word = '', result = []

for(const i in str) {
   word = str[i]==' ' || (+i==str.length-1) ? (result.push((word+str[i]).trimEnd()), '') : (word+str[i])
}

console.log(result)

请注意与for(const char **of** str)for(const i **in** str)的区别……一个给您实际字符,而另一个给您实际索引。

答案 1 :(得分:0)

更新

var str = 'Lorem Ipsum Lorem Ipsum';
var new_str = '';
for(var i=0;i<str.length;i++) {
    if(str[i] == ' ') {
        alert( new_str );
        new_str = '';
    } else {
        new_str += str[i];
    }
}

答案 2 :(得分:0)

jacoco:report-aggregate

如果var str = 'Lorem Ipsum Lorem Ipsum'; var new_str = ' '; var word = ''; for(var i=0;i<str.length;i++) { if(str[i] == new_str) { alert( word ); word = ''; } else { word += str[i] } } alert(word) 不是空格字符串,请将其添加到str[i],否则提醒它并清除word

答案 3 :(得分:0)

var str = "Lorem Ipsum Lorem Ipsum";
var item = '';
var last_item = 0;
for(var i=0;i<str.length;++i){
    if(str[i]==" "){
        item = str.slice(last_item,i);
        if(i+1<str.length){
            last_item = i+1;
        }
        alert(item);
    }
}
item = str.slice(last_item,str.length);
alert(item);

此代码段已经过测试并且运行良好;) 祝您学习顺利

答案 4 :(得分:0)

您可以编写这样的函数,也可以用alert替换console.log:

让字符串=“你好吗”;

let getWordsFromString = (string) =>
{
    let word = "";

    for(let i=0;i<string.length;++i)
    {
        if(string.charAt(i) === ' ')
        {
            console.log(word);
            word = "";
            while(i<string.length-1 && string.charAt(i+1) === ' ') ++i;
        }
        else
        {
            word += string.charAt(i);
        }
    }

    if(word.length>0)
        console.log(word);
}

getWordsFromString(string);

答案 5 :(得分:-1)

var str = 'Lorem Ipsum Lorem Ipsum';
var new_str = '';
for(var i=0;i<str.length;i++) {
    if(str[i] == ' ') {     // Problem 1) you need to check against space
        alert( new_str );   
        new_str = '';
    } else  {               // Problem 2) you need to append character to new_str
        new_str += str[i];
    }
}
alert( new_str );    // Problem 3) you need the last alert for end of string

答案 6 :(得分:-2)

const str = 'Lorem Ipsum Lorem Ipsum';

// The first way is RegEx
const array = str.match(/\w+/g);
array.forEach(alert);

// The second way is reduce
let index = 0;
const result = Array.from(str)
  .reduce((acc, char) => {
    acc[index] = acc[index] || [];
    if (char !== ' ') {
      acc[index].push(char);
      return acc;
    }
    index++;
    return acc;
  }, [])
  .map((wordArray) => wordArray.join(''));

result.forEach(alert);