2014-11-12 5 views
1

Я пытаюсь выяснить, имеет ли текстовое поле данное слово, независимо от случая. Например, как я могу определить, имеет ли данное текстовое поле #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); 
}); 
+0

Какая у вас задание? Я попытался ответить на ваш вопрос ниже, но я не совсем уверен, что вы пытаетесь сделать. Не могли бы вы уточнить? – royhowie

+0

@royhowie, чтобы проверить введенное слово, будь то прописные, строчные или комбо. – X10nD

+0

Итак, вы хотите знать, имеет ли текстовое поле данное слово, независимо от случая? – royhowie

ответ

2

Самый простой способ проверить, имеет ли текстовое поле данное слово, независимо от того случая, чтобы преобразовать текстовое поле в нижний регистр, а затем разделить пробелами и найти 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, завернуть, если блок в цикле. Это будет O(n²) сложности, но это должно быть хорошо, если ваш вход не очень длинный .

Мы говорим тысячи и тысячи слов, чтобы это имело значение.

+0

Текст будет ограничен 15-20 словами – X10nD

+0

@ X10nD Тогда это не имело бы значения. Это будет только замедляться для чрезвычайно больших затрат. – royhowie

+0

Все, что я сделал, это «text.toLowerCase(). Split (« »); изменить мой код. Благодаря..! – X10nD

1

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

 
    } 
 

 
} 
 

 

 
checkAlphaCase('ANIR');

1

TRY это

$(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>

1

Вы можете сделать без учета регистра регулярное выражение со всеми словами, как это:

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(" ")); 
}); 

Используя \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); 
}); 
Смежные вопросы