无论大小写,请检查文本框中是否有单词

Check whether a word is in a text box regardless of case

本文关键字:是否 单词 文本 检查 大小写      更新时间:2023-09-26

我正试图弄清楚一个文本框是否有一个给定的单词,而不考虑大小写。例如,如何确定给定的文本框#TextBox中是否包含单词"hello"

var specialwords = ['hello','Hello','HELLO']; //special words here
$('#TextBox').keydown(function() {
    var text = $(this).val();
    text = text.split(" ");
    var newtext = "";
    for(var i = 0; i < text.length; i++){
        // code to check words
    }
    $("#check").html(newtext);
});

无论大小写,检查文本框是否有给定单词的最简单方法是将文本框转换为小写,然后用空格分隔并找到单词的indexOf

var word = "hello".toLowerCase();    // make sure this word is lowercase
$("#TextBox").keydown(function () {
    var text = $(this).val().toLowerCase().split(" ");
    if (text.indexOf(word) > -1) {
        // do something
    } else {
        // word is not in the text box
    }
})

如果要检查单词数组specialWords,请将If块包装在for循环中。这将是O(n²)的复杂性,但这应该没问题,只要您的输入不是很长1

1我们谈论的是成千上万的单词,它们都很重要

function checkAlphaCase(alpha) {
  if (alpha == alpha.toLowerCase()) {
    alert('LowerCase');
  } else if (alpha == alpha.toUpperCase()) {
    alert('UppperCase');
  } else {
    alert('MixedCase');
  }
}
checkAlphaCase('ANIR');

尝试此

$(document).ready(function(){
    
  
  var specialwords = ['hello','Hello','HELLO'];//special words here
            $('#TextBox').keydown(function() {
             //alert(this);
                var text = $(this).val().trim();
              console.log(text);
              //  text = text.trim().split(" ");
                var newtext = "";
                var up=0,low=0;
                for(var i=0;i<text.length;i++){
                  if(text[i]==" ")
                    continue;
                  else{
                  if(text[i].trim()==text[i].trim().toLowerCase())
                    low++;
                   if(text[i].trim()==text[i].trim().toUpperCase())
                    up++;
                    }
                }
              if(up>0 && low>0)
                newtext="mix case";
              else if(up>0)
                newtext="Upper case"; 
              else if(low>0)
                newtext="Lower case"
                $("#check").html(newtext);
            });
  
  });       
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="TextBox">
<div id="check"></div>

您可以制作一个不区分大小写的regex,其中包含以下所有单词:

RegExp("''b(?:" + specialwords.join("|") + ")''b", "i")

然后你可以用它来对付每个单词。我不确定一旦你识别出这些单词,你会对它们做什么。。。出于代码片段的目的,我将假设您忽略了文本中的它们。

var specialwords = ['hello','world','pizza']; //special words here
var swr = RegExp("''b(?:" + specialwords.join("|") + ")''b", "i")
$('#TextBox').keydown(function() {
    var text = $(this).val();
    text = text.split(" ");
    var newtext = [];
    for(var i=0; i<text.length; i++){
        if (!text.match(swr)) {
            newtext.push(text)
        }
    }
    $("#check").html(newtext.join(" "));
});

在regexp中使用'b作为单词分隔符,如果需要的话,您还可以在不拆分单词的情况下检查整个文本。

var specialwords = ['hello','world','pizza']; //special words here
var swr = RegExp("''b(?:" + specialwords.join("|") + ")''b", "i")
$('#TextBox').keydown(function() {
    var text = $(this).val();
    var newtext = text.replace(swr, "");
    $("#check").html(newtext);
});