How to compare two strings regardless of their capitalization?
我有:
1 | mytext = jQuery('#usp-title').val(); |
然后我做
1 | if(jQuery("#datafetch h2 a").text() == mytext) { |
但有一个标题可以是:
由于其他原因,我无法将文本格式标准化,因此我真的希望比较两个字符串,而不考虑它们的大写。
更新
问题是,我使用输入字段作为搜索,这样用户可以键入
完整代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function fetch(){ jQuery('#datafetch').empty(); mytext = jQuery('#usp-title').val(); jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: mytext }, success: function(data) { jQuery('#datafetch').html( data ); if(jQuery("#datafetch h2 a").text().toLowerCase().trim() == mytext.toLowerCase().trim()) { jQuery("#componi").attr("disabled","disabled").hide(); } else { jQuery("#componi").removeAttr("disabled","disabled").show(); } if(jQuery("#datafetch h2 a").text() != mytext) { jQuery("#fatto").hide(); jQuery('#datafetch').empty(); } } }); } |
事实上,这更棘手,因为搜索来自于文本输入,所以这是关于Ajax的查询,我认为不仅仅是资本化,只是一个想法。上面的最新代码通过键入以下内容没有结果:
更新2
文章标题:
1 | Space Mission |
用户搜索
1 | Space Mission |
console.log(数据)给出正确的结果
1 2 3 4 5 6 7 8 9 10 | <ul class="list-unstyled margin-top-80"> <li> Space Mission </li> </ul> |
但这并没有发生:
1 | jQuery('#datafetch').html( data ); |
如果我插入正确的单词
隐藏两个
1 | "Space Mission".toLowerCase() =="space mission".toLowerCase() |
在你的问题中
1 | if(jQuery("#datafetch h2 a").text().toLowerCase() == mytext.toLowerCase()) { |
根据@charlietfl的建议,在用户进入尾随空格或前导空格时进行剪裁
1 | if(jQuery("#datafetch h2 a").text().trim().toLowerCase() == mytext.trim().toLowerCase()) { |
接受的答案是正确的,它确实回答了我原来的问题,这就是我接受它的原因。但是,使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function fetch(){ jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: jQuery('#usp-title').val() }, success: function(data) { jQuery("#datafetch").html(data); setTimeout(function() { var text1 = jQuery("#datafetch").find("h2").find("a").html(); var text1B = text1.toLowerCase(); var text2 = jQuery('#usp-title').val(); var text2B = text2.toLowerCase(); if(text1B == text2B) { jQuery("#componi").attr("disabled","disabled").hide(); } else { jQuery("#componi").removeAttr("disabled","disabled").show(); jQuery("#fatto").hide(); jQuery('#datafetch').empty(); } }, 1000); } }); } |
更新
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function fetch(){ var text1; var text1B; var text2; var text2B; jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: jQuery('#usp-title').val() }, success: function(data) { jQuery("#datafetch").html(data).promise().done(function(){ text1 = jQuery("#datafetch").find("h2").find("a").html(); text1B = text1.toLowerCase(); text2 = jQuery('#usp-title').val(); text2B = text2.toLowerCase(); if (text1B != text2B) { jQuery("#componi").removeAttr("disabled","disabled").show(); jQuery("#fatto").hide(); jQuery('#datafetch').empty(); } else if (text1B == text2B) { jQuery("#componi").attr("disabled","disabled").hide(); } }); } }); } |
更新二
这是我最后用的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function fetch(){ jQuery.ajax({ url: '<?php echo admin_url('admin-ajax.php'); ?>', type: 'post', data: { action: 'data_fetch', exactwords: jQuery('#usp-title').val() }, success: function(data) { var text2; var text2B; text2 = jQuery('#usp-title').val(); text2B = text2.toLowerCase(); jQuery("#datafetch").html(data).promise().done(function(){ jQuery("#datafetch ul li h2 a").each(function() { var $this = jQuery(this); if ($this.text().toLowerCase() !== text2B) { $this.parent().parent().hide(); } else if (text1B == text2B) { jQuery("#componi").attr("disabled","disabled").hide(); } }); }); } }); } |
使用jquery获取输入结果
1 | var string = jQuery("#datafetch h2 a").text() |
然后你可以尝试以下任何一种方法-
简单字符串比较:将两者转换为相同的大小写:
1 | string.toUpperCase() ==="String".toUpperCase() |
如果您对regex满意(请注意regex中的i选项):
1 2 | var otherString = /String/i otherString.test(string) |
还有"匹配"功能:
1 | string.match(/STRING/i) |
未找到匹配项时match返回空值
将两个字符串都转换为大写或小写
您将需要将两个字符串都转换为小写或大写,然后进行比较。
1 2 3 4 5 | var mytext = jQuery('#usp-title').val(); if(jQuery("#datafetch h2 a").text().toLowerCase() == mytext.toLowerCase()) { } |
你可以这样做
1 | "Space Mission".replace(/\s+/g,"").toLowerCase() =="space mission".replace(/\s+/g,"").toLowerCase() |
左侧等于
它将首先删除任何空白,即使在单词之间,也将转换为小写。由于