1

アドレス文字列を検索したい。

「南東」が見つかった場合は、「SE」に置き換えます。

「 Southwest 」が見つかった場合は、「 SW 」に置き換えます。

「北東」が見つかった場合は、「NE」に置き換えます。

「北東」が見つかった場合は、「NW」に置き換えます。

これが私がこれまでにしたことです:

 var searchStr = [" Southeast ", " Southwest ", " Northeast ", " Northwest "];
 var replaceStr = [" SE ", " SW ", " NE ", " NW "];
 var oldAddress = $("#address").text();

 for (i=0;i<searchStr.length;i++){
     var n = oldAddress.match(/this[i]/g);
         if(n != null){
            $("#address").text(replaceStr[i]);  
         }                        
 }

何もしませんでした。何か不足していますか?

4

5 に答える 5

1
var newAddress = oldAddress
                    .replace("Southeast", "SE")
                    .replace("Southwest", "SW")
                    .replace("Northeast", "NE")
                    .replace("Northwest", "NW");
$("#address").text(newAddress);
于 2012-12-05T15:47:33.327 に答える
1
$("#address").text(function(i, text) {
    $.each({
        "Southeast": "SE",
        "Southwest": "SW",
        "Northeast": "NE",
        "Northwest": "NW"
    }, function(k, v) {
        var regex = new RegExp('" ' + k + ' "', "ig");
        text = text.replace(regex, '" ' + v + ' "');
    });
    return text;
});​

デモ:http: //jsfiddle.net/rKK89/1/

于 2012-12-05T15:47:46.153 に答える
0

既存の回答とは別に、次の方法でも実行できます:-

 var searchStr = [" Southeast ", " Southwest ", " Northeast ", " Northwest "];
 var replaceStr = [" SE ", " SW ", " NE ", " NW "];
 var oldAddress = $("#address").text();

 for (i=0;i<searchStr.length;i++){
     oldAddress = oldAddress.replace(searchStr[i], replaceStr[i]);
 }
 $("#replaced").text(oldAddress);

サンプル HTML:

<div id="address">First I went to Southeast , next to Northwest , next to Southwest and finally to Northeast </div>
<br/>
Updated content is here:
<br/>
<div id="replaced"></div>

ライブデモを参照

于 2012-12-05T16:03:48.033 に答える
0
 var r = {
   southeast: 'SE',
   southwest: 'SW',
   northeast: 'NE',
   northwest: 'NW'
 };

 $("#address").text ($("#address").text().replace (
   RegExp (Object.keys (r).join ('|'), 'ig'), 
   function (m) { return r[m.toLowerCase ()]; }));​

http://jsfiddle.net/fJ7Vf/でフィドルを参照してください

于 2012-12-05T16:04:44.697 に答える
0

this[i] を使用して何をしようとしているのかわかりませんが、その場所に searchStr[i] を記述しても機能しません。そこに文字列を作成しているためです。それが機能するためには、正規表現オブジェクトを作成する必要があります

このコードを試してください

var searchStr = [" Southeast ", " Southwest ", " Northeast ", " Northwest "];
var replaceStr = [" SE ", " SW ", " NE ", " NW "];
var oldAddress = $("#address").text();

for (var i=0;i<searchStr.length;i++){
var pattern =new RegExp(searchStr[i]);
    var n = oldAddress.match(pattern);
       if(n != null){
            $("#address").text(replaceStr[i]);  
         }                         
}
于 2012-12-05T16:05:22.557 に答える