Dart(Flutter)で文字列を分割する方法について書いています。
文字列の処理が必要になるのは、例えば、次のようなケースです。
- カンマ区切りの文字列を配列(List)に変換したい
- URLやファイルパスを分解したい
- 入力フォームの値を分割して処理したい
- APIレスポンスの文字列を加工したい
この記事では、Dartで文字列を分割する方法を中心に解説します。
※ 載せているコードはFlutter 3.29.3 / Dart 3.7.2で動作を確認しています。
Dartで文字列を分割する基本(split)
Dartで文字列を分割するには、String.split()メソッドを使います。
基本構文
String.split(Pattern pattern)
指定した区切り文字(pattern)で文字列を分割し、リスト(List<String>)を返します。
文字列を特定の文字で分割する
split()メソッドを利用したサンプルコードです。
カンマ区切りで分割する例
void main() {
String text = 'apple,banana,orange';
List<String> result = text.split(',');
print(result);
}
text変数にカンマ区切りの文字列が入っています。
このtext変数からsplitメソッドを呼び出して、文字列を分割しています。
「,」を渡すことで、カンマ区切りで分割されます。
実行結果
実行すると、下記のように出力されました。
[apple, banana, orange]
カンマ区切りのリストになっています。
CSV形式や、設定値の分割などでよく使われるパターンです。
スペース(空白)で文字列を分割する
スペースで文字列を分割する場合も同様に
split()メソッドに対して「’ ‘」を渡します。
void main() {
String text = 'Flutter Dart Programming';
List<String> result = text.split(' ');
print(result);
}
実行結果
実行すると、下記のようにスペースで分割されて、リストになっていることが確認できます。
[Flutter, Dart, Programming]
単語ごとに分割したい場合に便利です。
改行で文字列を分割する
改行で文字列を分割したいときです。
複数行のテキストを行単位で処理したい場合は、改行コードを渡すことで分割します。
void main() {
String text = 'line1\nline2\nline3';
List<String> result = text.split('\n');
print(result);
}
実行結果
渡した改行コードで分割され、リストが返ってきました。
[line1, line2, line3]
Flutterでテキスト入力やログを扱う際に使われます。
正規表現を使って文字列を分割する
split()は正規表現(RegExp)も指定できます。
複数の区切り文字で分割する例
正規表現を指定して、分割する例です。
void main() {
String text = 'apple,banana orange';
List<String> result = text.split(RegExp('[, ]'));
print(result);
}
text変数には、カンマとスペースが入った文字列が指定されています。
次の行でRegExpを使って、正規表現でカンマとスペースを指定しています。
これで、カンマとスペースで分割することができます。
実行結果
[apple, banana, orange]
カンマやスペースなど、複数の区切り文字を使って、まとめて処理したい場合に便利です。
区切り文字が存在しない場合
区切り文字が含まれていない場合でも、エラーにはならず元の文字列が1要素のListとして返ります。
void main() {
String text = 'flutter';
List<String> result = text.split(',');
print(result);
}
このコードではカンマ区切りで分割しようとしていますが
元の文字列にカンマが含まれていません。
結果、下記のように1要素だけがリストとして返ってきます。
[flutter]
Flutterでの使用例(UIで分割結果を表示)
Flutterでの使用例です。
カンマ区切りで文字列分割して、内容をListViewに表示しています。
import 'package:flutter/material.dart';
class SplitSamplePage extends StatelessWidget {
const SplitSamplePage({super.key});
@override
Widget build(BuildContext context) {
String text = 'red,green,blue';
List<String> colors = text.split(',');
return Scaffold(
appBar: AppBar(title: const Text('文字列分割サンプル')),
body: ListView(
children: colors.map((c) => ListTile(title: Text(c))).toList(),
),
);
}
}
文字列分割でよくある注意点
文字列分割する際の注意点です。
空文字が含まれる場合
空要素が含まれる場合は、意図しない分割になる場合があります。
String text = 'apple,,banana';
print(text.split(','));
上記のコードを実行すると、下記のように空要素もリストに含まれます。
[apple, , banana]
不要な空要素が含まれる場合は、where を使って除外するとよいです。
List<String> result =
text.split(',').where((e) => e.isNotEmpty).toList();
上記のようにwhereで除外を書いておくことで、空要素を除外して返してくれます。
まとめ
Dartで文字列を分割するには、split()メソッドを使います。
split(',')で簡単に分割できる- 正規表現(RegExp)にも対応
- Flutterでもそのまま使える
- 空要素には注意が必要
文字列操作は、フォーム処理・API連携・UI表示など幅広い場面で使われるため、ぜひ覚えておきましょう。

コメント