【ReactNative/JavaScript】文字列中に改行(Line Break)が含まれているかを検査する

こんばんは。今日はReact Native(というよりはJavaScript)小ネタのご紹介です。

それでは早速参ります。

実現したいこと

React Native (JavaScript)で、文字列中に改行が含まれているかをチェックしたい。

実現方法

こちらのStack Overflowが参考になりました。

https://stackoverflow.com/questions/10950538/how-to-detect-line-breaks-in-a-text-area-input

numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length;

何をしているのか、もう少し見ておきます。

はじめにmatch構文です。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match

構文:
match(regexp)

引数:
regexp

正規表現オブジェクトです。

regexp が RegExp ではないオブジェクトであった場合、暗黙的に RegExp への変換が new RegExp(regexp) を使用して行われます。

一切引数を与えずに match() メソッドを使った場合、空の文字列 1 つを持つ Array、 [""] が得られます。

返値:
Array を返します。これはグローバル (g) フラグの有無によって内容が変わります。一致するものが見つからなかった場合は null を返します。

なるほど、引数には正規表現をオブジェクトを渡して、正規表現に一致した結果を返す、という構文なのですね。

/¥n/gは、文字列”¥n”(改行)を文字列全体にわたって(/g)チェックする、という意味の正規表現のようです。match構文の説明の中でも以下のように説明があります。なるほど、/gがない場合には最初に一致した要素だけ返すわけですね。

g フラグがあった場合は、正規表現全体に一致したすべての結果を返しますが、キャプチャグループは返しません。

g フラグがなかった場合、最初に完全に一致したものと、それに関するキャプチャグループを返します。この場合、返される要素には下記の追加のプロパティが存在します。

Mozillaのページより

||[]は、改行(line break)が一つもない場合に、後ろのlengthが計算できるようにするための空の配列を定義するための構文です。

確かに、これで改行の数をカウントできそうです!勉強になりました!

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。