替换本地字符并将其与变量进行比较

时间:2017-01-27 19:51:31

标签: javascript jquery replace compare

我想要显示第一个字母等于变量的所有.item

问题 - 如果第一个字母是本地字符而我试图替换它们 - č-ć-đ-š-ž分别替换为c-c-d-s-z

我希望项目Ćao(例如)在此代码之后变得可见,但它不起作用。

var a = 'c';
$('.item').each(function(){
    var b = $(this).text().charAt(0);
    var mapObj = {č:"c", ć:"c", đ:"d", š:"s", ž:"z"};
    b = b.replace(/č|ć|đ|š|ž/i, function(matched){
        return mapObj[matched];
    });
    if (b == a) {$(this).show();}
});

2 个答案:

答案 0 :(得分:4)

您只需将.toLowerCase()添加到返回mapObj项目的位置:

var a = 'c';
$('.item').each(function() {
  var b = $(this).text().charAt(0);
  var mapObj = {
    č: "c",
    ć: "c",
    đ: "d",
    š: "s",
    ž: "z"
  };
  b = b.replace(/č|ć|đ|š|ž/i, function(matched) {
    return mapObj[matched.toLowerCase()]; // map to lowercase char
  });
  if (b.toLowerCase() == a.toLowerCase()) { // always compare like cases
    $(this).show();
  }
});
.item {
  display: none;
  width: 50px;
  height: 50px;
  background: #F00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item">Ćao</div>

即使您的匹配不敏感,它也不会自动转换返回的字符。

答案 1 :(得分:1)

资本Ć和小写ć是两个完全不同的字符。您需要相应地扩展映射表。