🔍

【Flutter】大文字と小文字を区別せずに文字列を比較する方法

2023/08/20に公開

Flutterはデフォルトでは大文字と小文字を区別してしまう

何かのタイトルや、本文中のキーワードを検索する場合には、文字列の比較を使うことになるかと思います。

final list = ['Switch ほしい', 'switch 買った'];
final result = list
              .where((element) =>
                  element.contains('switch'))
              .toList();
// result == ['switch 買った']

しかし、Flutter(Dart)は、デフォルトでは大文字と小文字を区別してしまいます。別に区別しなくていいよという場面もありますが、その方法が用意されていません。
そこで、小技を使って大文字と小文字の区別を無くします。

final list = ['Switch ほしい', 'switch 買った'];
final result = list
              .where((element) =>
                  element.toLowerCase().contains('switch'.toLowerCase()))
              .toList();
// result == ['Switch ほしい', 'switch 買った']

比較する文字列を両方とも.toLowerCase()で小文字にした上で比較すれば大文字と小文字の区別がなくなります。

まとめ

IDなんかを検索するなら大文字小文字を区別するべきだと思いますが、文書についてはそこまで厳格じゃなくてもいい場面がほとんどのはずなので、割と使える小技かと思います。

Discussion