Dartで文字列を置換する方法!【Flutter対応】

Dart(Flutter)で文字列を置換する方法について書いています。
replaceAll()replaceFirst()メソッドを文字列から呼び出すことで簡単に文字列置換できます。

文字列置換が必要になるのは、例えば次のようなケースです。

  • 不要な文字(改行・空白・記号など)を削除したい
  • URLやパスの一部を変換したい
  • 表示用に文字列を整形したい

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

Dartで文字列を置換する基本:replaceAll()

Dartで文字列を全て置換する場合に使うのがreplaceAll()メソッドです。

String text = 'Hello Dart';
String result = text.replaceAll('Dart', 'Flutter');

print(result); // Hello Flutter

text変数に文字列が入っています。
次の処理で、文字列の変数からreplaceAll()メソッドを呼び出して、「Dart」を「Flutter」に書き換えています。
このように第1引数に指定した文字列を、第2引数に指定した文字列で書き換えてくれます。

結果を出力すると「Hello Flutter」となり、置換されたことが確認できます。

ポイント

  • 第1引数:置換したい文字列
  • 第2引数:置換後の文字列
  • 元の文字列は変更されず、新しい文字列が返る

特定の1箇所だけ置換したい場合:replaceFirst()

最初に見つかった対象を1箇所だけを置換したい場合は、replaceFirst() を使います。

String text = 'apple apple apple';
String result = text.replaceFirst('apple', 'orange');

print(result); // orange apple apple

text変数には「apple」という文字列が3個入っています。
次の処理でreplaceFirst()メソッドを使って置換しています。

結果を確認すると「orange apple apple」となり、最初の1つ目だけが変わったことが確認できました。

正規表現を使って文字列を置換する

replaceAll()は正規表現(RegExp)も使えます。

数字をすべて置換する例

文字列から正規表現を使って、数字を削除する例です。

String text = 'user123';
String result = text.replaceAll(RegExp(r'\d'), '');

print(result); // user

text変数の文字列には数字が入っています。
replaceAll()メソッドを使うときに正規表現(RegExp)をつかって、数字を指定しています。

出力すると「user」となり、数値が消えたことが確認できます。

空白(スペース)を削除する例

こちらはスペースを正規表現で指定して削除する例です。

String text = 'Hello World Dart';
String result = text.replaceAll(RegExp(r'\s'), '');

print(result); // HelloWorldDart

text変数にスペースを含んだ文字列が入っています。
正規表現(RegExp)をつかって、「\s」を指定することでスペースを削除しています。

改行コードを置換・削除する

テキスト表示を整えるときに、改行の置換・削除する方法についてです。
改行を消したい場合には、改行コード(\n)を置換・削除すると良いです。

String text = 'Hello\nFlutter\nDart';
String result = text.replaceAll('\n', ' ');

print(result); // Hello Flutter Dart

改行コード「\n」をスペースで置換しています。
こうすることで、text変数の文字列に入っている改行コードはスペースに置き換わって、新しい文字列として返ってきます。

Flutterでの実用例(Textウィジェット)

Flutterの画面で文字列を置換して表示する例です。
置換した文字列をTextウィジェットで表示しています。

import 'package:flutter/material.dart';

class ReplaceSamplePage extends StatelessWidget {
  const ReplaceSamplePage({super.key});

  @override
  Widget build(BuildContext context) {
    String message = 'Hello Dart';
    String replaced = message.replaceAll('Dart', 'Flutter');

    return Scaffold(
      appBar: AppBar(
        title: const Text('文字列置換サンプル'),
      ),
      body: Center(
        child: Text(
          replaced,
          style: const TextStyle(fontSize: 24),
        ),
      ),
    );
  }
}

message変数の文字列をreplaceAll()メソッドで置換して、結果をreplaced変数に格納しています。
結果が入った変数をTextウィジェットで表示しています。

文字列を置換するときの注意点

文字列を置換するときの注意点です。

置換元の文字列は変わらない

replaceAll()replaceFirst()で置換した場合、置換元の文字列は変更されません。

String text = 'Hello';
text.replaceAll('H', 'J');

print(text); // Hello(変わらない)

必ず、戻り値を変数に代入しましょう。

text = text.replaceAll('H', 'J');

まとめ

今回はDart(Flutter)で文字列を置換する方法を確認していきました。

まとめると、下記のようになります。

  • replaceAll() で文字列をまとめて置換
  • replaceFirst() で最初の1箇所だけ置換
  • 正規表現(RegExp)で柔軟な置換が可能
  • FlutterのUI表示前に文字列を加工できる

文字列処理はフォーム入力・表示整形・バリデーションなど、Flutter開発のさまざまな場面で使われます。
ぜひ実際のアプリ開発で活用してみてください。

コメント