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開発のさまざまな場面で使われます。
ぜひ実際のアプリ開発で活用してみてください。

コメント