7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutter で文字から空白文字をすべて削除

Last updated at Posted at 2020-08-16

はじめに

文字の前後から空白文字を削除するのは簡単です

String text = ' text ';

// 前後の空白文字削除
print(text.trim());

// 前の空白文字削除
print(text.trimLeft());

// 後の空白文字削除
print(text.trimRight());

ですが、これでは文字の中に入っている空白文字を削除することができません

Dart でも正規表現使います :sunglasses:

環境

  • macOS Catalina バージョン 10.15.6
  • Android Studio 4.0
flutter --version
Flutter 1.20.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 2ae34518b8 (10 days ago) • 2020-08-05 19:53:19 -0700
Engine • revision c8e3b94853
Tools • Dart 2.9.0

前提条件

  • Flutter のセットアップ済み
  • Flutter プロジェクト作成済み

いざ正規表現

以下を利用します

String text = ' te xt ';
print(text.replaceAll(RegExp(r'\s'), ''));

正規表現について

Dart は空白について、 Unicode White_Space プロパティ(バージョン6.2以降)と BOM 文字によって定義されているようなので、 \s は、以下の文字にもマッチします

Name Code point
CHARACTER TABULATION U+0009
LINE FEED U+000A
LINE TABULATION U+000B
FORM FEED U+000C
CARRIAGE RETURN U+000D
SPACE U+0020
NEXT LINE U+0085
NO-BREAK SPACE U+00A0
OGHAM SPACE MARK U+1680
EN QUAD U+2000
EM QUAD U+2001
EN SPACE U+2002
EM SPACE U+2003
THREE-PER-EM SPACE U+2004
FOUR-PER-EM SPACE U+2005
SIX-PER-EM SPACE U+2006
FIGURE SPACE U+2007
PUNCTUATION SPACE U+2008
THIN SPACE U+2009
HAIR SPACE U+200A
LINE SEPARATOR U+2028
PARAGRAPH SEPARATOR U+2029
NARROW NO-BREAK SPACE U+202F
MEDIUM MATHEMATICAL SPACE U+205F
IDEOGRAPHIC SPACE U+3000

実際に試してみると以下のようになります


final text = 'te\u0009\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFFxt'.replaceAll(RegExp(r'\s'), '');

print(text);

// 以下のような感じで出力されるはず
// flutter: text

// ただ、Unicode のバージョンによっては空白文字に U+0085 が含まれていないものがあるため
// その場合は以下のように表示されます(自分のiOSシミュレーターだったらこうなりました)
// flutter: te …xt

参考

おわりに

Dart でも正規表現使えて良いですね!
(正規表現何も分からない笑)

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?