0

サイトから (find() メソッドで) この文字列を取得しました:

uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła

すべての文字を削除し、「 x 」をドットに置き換える必要があります。

文字を削除する方法:temp2 = temp2.replace(/[^0-9]/gi, ''); しかし、「 x 」をドットに変更する方法がわかりません。手伝って頂けますか?

期待される出力:53.1000

4

4 に答える 4

3

最初に「x」を置き換えてから、現在の正規表現を変更してドットを無視します。

var temp2 = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła";
temp2 = temp2.replace(/ x /gi, '.');
temp2 = temp2.replace(/[^0-9\.]/gi, '');

「x」の周りのスペースに注意してください (そうしないと、Maximum の「x」もドットになります)。

于 2013-06-18T22:40:53.777 に答える
2

次の 2 つの手順を検討してください。

s.replace(/[^0-9x]/gi, '') // remove everything but numbers and x
 .replace(/x/gi, '.')      // replace x with dot (leaving numbers)

しかし気をつけてください:

uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła-> .53.1000(Maximum に x があるため)

于 2013-06-18T22:40:06.493 に答える
0

すでに回答を受け入れていますが、目的を達成するための代替手段は次のとおりです。

var str = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła",
    output = str.replace(/\D/gi, function (a, b, c) {
        if (a == 'x' && c.charAt(b-1) == ' ' && c.charAt(b+1) == ' ') {
            return '.';
        }
        return '';
    })

console.log(output); // => '53.1000'

JS フィドルのデモ

また、代替の空白文字を文字の前後に配置できる更新されたアプローチx:

var str = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła",
    output = str.replace(/\D/g, function (a, b, c) {
        if (a == 'x' && /\s/.test(c.charAt(b-1)) && /\s/.test(c.charAt(b+1))) {
            return '.';
        }
        return '';
    })

console.log(output);

JS フィドルのデモ

上記の説明 (後者のコード スニペット):

  • /\D/数字以外のすべての文字 ( 0 ~ 9 以外のすべて)に一致します。
  • g- g「グローバル」、最初の だけでなく、すべての出現に一致します。
  • function (a, b, c):
    • a- は一致した文字そのものです。
    • b- 文字列内でその文字が見つかったインデックスです。
    • c- 作業中の文字列。
  • if (a == 'x' && /\s/.test(c.charAt(b-1)) && /\s/.test(c.charAt(b+1))):
    • a == 'x'- 一致した文字が , であるかどうかのxテスト
    • /\s/.test()test()- 正規表現をテストして、メソッドに渡された文字列と一致するかどうかを確認します。
    • c.charAt(b-1)- インデックスを使用して、文字列内の一致した文字の前の文字を調べます。
    • c.charAt(b+1)- 今回は、文字列内の次の文字を調べます。
    • すべてが一致する場合(一致はxであり、前後の文字が両方とも空白である場合、.文字を返します。
    • それ以外の場合は、空の文字列を返します。

参考文献:

于 2013-06-18T22:58:32.607 に答える
0

置換を使用できますが、すべての文字を削除すると x も削除されるため、最初に置換を行う必要があります。2 つの x があることに注意してください。特定のケースでは、次のように使用できます。

var string = "uniwersalneszaryliniewypukłaMaximum VIIIwinylowa na flizelinie53cm x 1000cmodporna na działanie światła"
console.log(string);

string = string.replace(/ x /gi,'.');
console.log(string);

string = string.replace(/[^0-9.]/gi,'');
console.log(string);

以前の x は引用符で囲まれていないため、最初の置換では変更されません。もう 1 つのオプションは、すべての x を置き換え、終了後に戻って先頭と末尾のドットを取り除くことです。

于 2013-06-18T22:42:22.253 に答える