如何从.split函数中删除单词? (JavaScript)

时间:2018-08-22 12:06:01

标签: javascript html arrays

我编写了一个程序,可以从给定的网页中提取文本。

我使用.split将单词放入数组。我想删除所有不以字母开头的单词,例如5X不会被分类为单词,而X5会被分类。

我的代码不起作用。

function getWords(node) {
    var text = node.innerText;
    output.textContent = inputValidation(text)
}
function inputValidation(text) {
    var wordData = text.split();
    for (i in wordData) {
        if (isLetter(i[0] == False)) {
            wordData.splice(i, 1);
        }

    } return wordData
}

function isLetter(str) {
    return str.length === 1 && str.match(/[a-z]/i);
}

5 个答案:

答案 0 :(得分:2)

您可以轻松地将其打包到过滤器中,如下所示:

let output = document.querySelector("#output");
getWords(document.querySelector("p"));

function getWords(node) {
  let text = node.innerText;
  output.textContent = text.split(" ").filter(word => word[0].toLowerCase().match(/[a-z]{1}/));
}
<p>Hello world! Click here Goodbye world! X7 9x</p>

<p id="output"></p>

答案 1 :(得分:2)

您的代码似乎不正确,因为您在boolean函数中以isLetter的形式传递isLetter(i[0] == False)值,这又是不正确的,因为F应该是小写,即{{1 }}。您的代码中有很多错误,但是您可以使用falseparseInt()来检查整个单词是否以字符或数字开头。

isNaN()

答案 2 :(得分:1)

将您的isLetter更改为

function isLetter(str) {
if (str.match(/^\d/)) {
   return true;
}
return false;
}

答案 3 :(得分:1)

我认为问题出在这行代码上

    if (isLetter(i[0] == False)) {

应该是

    if (isLetter(i[0]) == False) {

或更佳

    if (!isLetter(i[0])) {

答案 4 :(得分:0)

示例:

var text="abc def 10hij kl 3GH";

var splitedtext=text.split(" ");
var dummyarray=[];

for(var i=0;i<splitedtext.length;i++){
    var thistext=parseInt(splitedtext[i]);
  if( thistext.toString() == "NaN" ){
        dummyarray.push(splitedtext[i]);
  }
}

$("body").html(dummyarray.join(" "));

jsfiddle演示:http://jsfiddle.net/geogeorge/hztdxv4w/2/