如何从.split功能中删除单词?(Javascript)



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

我使用 .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);
}

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

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>

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

//when you have a letter as a first character
var word = 'X5';
var isLetter = isNaN(parseInt(word));
console.log(isLetter);
//when you dont have a letter as a first character
word = '5ABC';
isLetter = isNaN(parseInt(word));
console.log(isLetter);

将 isLetter 更改为

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

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

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

应该是

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

或更好

if (!isLetter(i[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/

最新更新