-5

私は文字列を持っています

var string =  .row-4 .col-2.grid-unit+.grid-unit+.grid-unit,.row-4 .col-3 .grid-unit .row-4 .grid-unit:nth-of-type(2n+3) .show-grid+.show-grid-reportdiv

そして、javascriptを使用して文字列から括弧内のプラス記号を残して、すべてのプラス記号を削除する必要があります

4

2 に答える 2

1

私はそれらの線に沿って何かを使います:

var i, splits, string = ".row-4 .col-2.grid-unit+.grid-unit+.grid-unit,.row-4 .col-3 .grid-unit .row-4 .grid-unit:nth-of-type(2n+3) .show-grid+.show-grid-reportdiv";
splits = string.split(/(\([^)]+\))/);
for (i = 0; i< splits.length; i++) {
    if (splits[i].charAt(0) !== "(") {
        splits[i] = splits[i].replace("+"," ");
    }
}
string = splits.join();

別の方法(パフォーマンスが優れているかどうかはわかりません)は、次を使用することです。

var string = ".row-4 .col-2.grid-unit+.grid-unit+.grid-unit,.row-4 .col-3 .grid-unit .row-4 .grid-unit:nth-of-type(2n+3) .show-grid+.show-grid-reportdiv";
function replacer (match, offset, string) { 
    var posOpen = string.indexOf("(",offset);
    var posClose = string.indexOf(")",offset);
    // we replace it if there are no more closing parenthesis or if there is one that is located after an opening one.
    if (posClose === -1 || (posClose > posOpen && posOpen !== -1)) {
        return " ";
    } else {
        return "+";
    }
};
string.replace(/\+/g, replacer);

編集:ループ内でより迅速にチェックするためのベルギの提案を追加しました。

EDIT2: 2 番目のソリューション

于 2013-06-06T14:44:44.150 に答える
0

次のコードを使用して、動作するかどうかお知らせください:)

var myString =  ".row-4 .col-2.grid-unit+.grid-unit+.grid-unit,.row-4:nth-of-type(2n+3) .col-3 .grid-unit .row-4 .grid-unit:nth-of-type(2n+3) .show-grid+.show-grid-reportdiv";

var myArray = myString.split(/\(.[\(\)A-Za-z0-9-.+]*\)/);

for(var i = 0; i < myArray.length; i++) { 
  myString = myString.replace(myArray[i], myArray[i].replace(/[+]/g,' ')); 
}
于 2013-06-06T14:37:31.220 に答える