Dartで文字列を切り出す方法!【Flutter対応】

Dart(Flutter)で文字列の一部を切り出す方法について書いています。
文字列を切り出す処理を使うのは、例えば次のようなケースです。

  • ユーザー名の先頭○文字だけ表示したい
  • 日付文字列から「年・月・日」を分離したい
  • URLやファイルパスの一部だけ取得したい
  • 入力値を加工して表示用の文字列を作りたい

※ 載せているコードはFlutter 3.29.3 / Dart 3.7.2で動作を確認しています。

Dartで文字列を切り出す基本方法

Dartでは主に次のメソッドを使って文字列を切り出します。

  • substring()
  • split()
  • replaceRange()
  • RegExp(正規表現)

用途に応じて使い分けるのがポイントです。

substringで文字列を切り出す

substring()は指定した位置から文字列を切り出す最も基本的な方法です。

指定位置から末尾まで切り出す

void main() {
  String text = 'FlutterDart';

  String result = text.substring(7);
  print(result); // Dart
}
  • 引数に開始位置(0始まり)を指定します
  • 指定位置から末尾まで取得できます

上記のコードではtext変数にいれた文字列からsubstringメソッドを呼び出しています。
7」を指定していることで、指定した位置から最後までの文字列を切り出しています。

0番目から数えて、7番目は「D」です。出力結果は「Dart」となります。

開始位置と終了位置を指定する

void main() {
  String text = 'FlutterDart';

  String result = text.substring(0, 7);
  print(result); // Flutter
}
  • 第1引数:開始位置
  • 第2引数:終了位置(この位置の文字は含まれない)

先ほどと同じコードですが、substringメソッドの開始位置を指定しています。
こうすることで、0番目から7番目(よりひとつ前)の文字列が取得できます。

ここでの結果は「Flutter」となります。

splitで区切り文字から切り出す方法

split()は特定の文字で分割したい場合に便利です。

カンマ区切りの文字列を分割する

void main() {
  String text = 'apple,banana,orange';

  List<String> result = text.split(',');
  print(result); // [apple, banana, orange]
}

カンマ区切りの文字列を分割するときには、文字列からsplit()メソッドを呼ぶといいです。
返り値として、分割した新しいリストが返ってきます。

URLやパスを分割する例

void main() {
  String path = '/users/profile/edit';

  List<String> parts = path.split('/');
  print(parts); // [, users, profile, edit]
}

urlの文字列をsplit()メソッドを使って、分割して返しています。

replaceRangeで指定範囲を切り出す・削除する

replaceRange()を使うと、特定範囲を削除または置換できます。

指定範囲を削除する

void main() {
  String text = 'FlutterDart';

  String result = text.replaceRange(7, text.length, '');
  print(result); // Flutter
}

replaceRange()メソッドを呼び出して、7番目から、テキストの最後までを指定しています。
第3引数には「''」(空文字)を指定しているため、指定範囲の文字が削除されます。

結果を確認すると「Flutter」となっています。

正規表現(RegExp)で柔軟に切り出す方法

条件が複雑な場合は正規表現を使うと便利です。

数字だけ切り出す例

void main() {
  String text = 'user123';

  String result = text.replaceAll(RegExp(r'\D'), '');
  print(result); // 123
}

このコードでは、文字列に含まれた数値を正規表現で除外して、文字のみを取得しています。

特定パターンだけ取得する例

void main() {
  String text = '2026-01-16';

  RegExp regExp = RegExp(r'\d{4}');
  String? result = regExp.firstMatch(text)?.group(0);

  print(result); // 2026
}

このコードでは、日付から連続する4桁の数値を取得しています。
結果として、西暦の2026が取得されます。

Flutterで使う場合の注意点

FlutterでもDartの文字列操作はそのまま使えます。
ただし、以下の点には注意しましょう。

  • substring()は範囲外を指定するとエラーになる
  • 日本語(マルチバイト文字)は length と表示文字数が異なる場合がある
  • 入力値は null や空文字チェックを行う

文字列を切り出す方法のまとめ(表)

目的 おすすめの方法
位置で切り出したい substring()
区切り文字で分割 split()
一部を削除・置換 replaceRange()
条件が複雑 RegExp

おわりに

今回はDart(Flutter)で、文字列を切り出す方法について確認していきました。

  • シンプル → substring()
  • 区切り文字 → split()
  • 柔軟な条件 → 正規表現

それぞれ用途を使い分けて、効率的に開発していきましょう。

コメント