我编写了一个从给定网页中提取文本的程序。
我使用 .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/