[Javascript] 不要な改行コードやタブやスペースを取り除けるtrim()

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

javascritpで任意のタグの内容を取得した時に、大量の不要な文字がくっついてくる事があります。
 

それはHTMLタグの構成で、bootstrapなどを使うと、大量にdivを作ってそれをネストすることで、たくさんの”tab”が取得した文字列に入り込むし、”tab”でなくて半角スペースという状態もたくさん存在します。
 

改行コードをあまり意識しないHTMLにおいて、コーダーは自由に好きなところで改行をしてしまうため、CRやLFなどのコードも、ふんだんに入り込みます。
 

とにかくスクレイピングなどをする場合に、不要な文字列を取り除きたい時に便利な”trim()関数”をちゃんと理解して事故のない使い方をしたいと思います。

trim()ってどんな関数?

任意の文字列の先頭と末尾にある”改行”、”タブ”、”スペース”を取り除いてくれて中のstringを不要文字のない状態に整形してくれます。
 

下記のように文字列(String)のprototypeで構成されているので、簡単に利用する事ができます。

使い方参考ページ
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/trim
 

利用場面サンプル

WEBページ内のHTMLタグの任意の箇所の内部文字列を取得した時に、エレメントの場所によっては不要な文字がたくさん発生します。
 

とある情報サイトのヘッダメニューをスクレイピングしようとした時をサンプルとして説明すると、下記のようになります。
 

 

 

通常であれば、上記のような文字列が返ってきますが、これはページのお作法が悪いという訳ではなく、HTMLではこうしたネストは当たり前だと考えなければいけません。
それをtrim()関数を使うと下記のように扱う事ができます。
 

 

 

上記のようなHTML構成に対して、メニュー文字列を取得する場合、”ul/li/a”の内包文字列を取得すればいいのですが、aタグの無い項目もあるため、”ul/li”のtextContentで取得してみたところ、下記のようになります。
 

注意点

trim()関数を使う時に気をつけなければいけない点は、不要文字列を取り除くのは、文字列内部には適用されないという事です。
 

「文字列の先頭と末尾だけの不要文字列を取り除いてくれる」と理解していればいいのですが、文字列全体で不要文字を取り除きたい場合は、replace()関数を使って、全ての場所を対象にしてあげてください。
 

 

上記で都合が悪い場合は、replaceで文字毎に処理してあげましょう。
 

 

利用場面に応じた使い分け、関数の特製をきちんと理解していれば大丈夫ですね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です