我编写了一个程序,可以从给定的网页中提取文本。
我使用.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);
}
答案 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 }}。您的代码中有很多错误,但是您可以使用false
和parseInt()
来检查整个单词是否以字符或数字开头。
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/