2016-09-20 17 views
2

現在、私が行っているプロジェクトではウィキペディアのスクレーパーを作成しています。問題は、文字列を比較しようとするときに私のコードがバグを生成することがあることです。もし私が同じように見える文字列を持っていると、それらは時々異なったものとして登録されます。例:異なるスペースと可能性のあるヌル文字を含む文字列を比較する

var elementText = $("selector").text(); 
console.log(elementText); // "abc def" 
console.log(elementText === "abc def"); // false 

私のコードで検出された奇妙な文字を使用しているようです。私は試してみました:

elementText.replace(/\s+/g, '')を試してみましたが、いずれもうまくいかないようです。直感的に等しい文字列が実際に等しくなるように、これらの文字を完全に取り除くにはどうすればよいですか?

注:==でコードをテストしましたが、問題を修正するようです。しかし、将来のバグを避けるために、私はこの修正プログラムの使用を避けたいと考えています。

+1

[データベース全体を無料でダウンロードできます](https://en.wikipedia.org/wiki/Wikipedia:Database_download)もご存知でしたか? – Liam

+0

@Liam私はしませんでした。私は間違いなくこれを調べます。それは、私はまだこの問題を回避する方法を知りたいと思っています。 – Bluefire

+0

Wikipediaでは、改行しないスペースと薄いスペースを使用しています。そして、それでも '\ s'はそれらと一致するはずです。あなたがその正規表現で何をやってみたのか正確に教えてください。 – Bergi

答えて

0

replaceの最初の引数を囲む引用符を削除します。これは、replace関数に正規表現(/g)を使用しているためで、引用符で囲む必要はありません。

function replaceBadSpaces(string) { 
    return decodeURIComponent(encodeURIComponent(string).replace(/%C2%A0/g, "%20")); 
} 
+1

'replace(/ \ u00a0/g、 '')'を使うだけで、URIエンコーディングを使う必要はありません。 – Bergi

+0

それはばかげていた。それを指摘してくれてありがとう! – Bluefire

関連する問題