Dart 指定した文字列が最後に見つかった位置を取得する

Dartで、指定した文字列が最後に見つかった位置を取得するコードを記述してます。「 lastIndexOf 」に位置を取得したい文字列を指定することで可能です。
環境
- OS windows11 home
- Dart 2.18.6
指定した文字列が最後に見つかった位置を取得
指定した文字列が最後に見つかった位置を取得するには、「 lastIndexOf 」を使用します。
文字列.lastIndexOf(文字列)
※ 開始位置は「0」から、値が存在しない場合は「-1」が返ります
実際に、使用してみます。
void main() {
String str = 'abcabc';
print(str.lastIndexOf('a')); // 3
print(str.lastIndexOf('b')); // 4
print(str.lastIndexOf('ab')); // 3
}
実行結果を見ると、取得できていることが確認できます。

存在しない値を指定すると「-1」が返ります。
void main() {
String str = 'abcabc';
print(str.lastIndexOf('f')); // -1
print(str.lastIndexOf('abf')); // -1
}
サロゲートペア
通常の2バイトで1文字で表すところを、4バイトで1文字となるサロゲートペア文字の場合は、位置は倍になります。
void main() {
String str = '😨😸😹😱🙊';
print(str.indexOf('😨')); // 0
print(str.indexOf('😸')); // 2
print(str.indexOf('😹😱')); // 4
}
検索位置を指定
第二引数に、検索位置を指定することも可能です。
※指定した位置より前のみを検索します。
void main() {
String str = 'abcabcabc';
print(str.lastIndexOf('a',1)); // 0
print(str.lastIndexOf('b',1)); // 1
print(str.lastIndexOf('ab',1)); // 0
}
文字列の長さより開始位置が大きい場合はエラーとなります。
void main() {
String str = 'abcabcabc';
print(str.lastIndexOf('a',10));
}
Unhandled exception:
RangeError: Invalid value: Not in inclusive range 0..9: 10
#0 _StringBase.lastIndexOf (dart:core-patch/string_patch.dart:378:7)
#1 main (file:///c:/sample/main.dart:5:13)
#2 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
-
前の記事
MariaDB ビッグ・エンディアンからIPアドレスを抽出する 2023.10.17
-
次の記事
chrome シークレットウィンドウを開くショートカットキー 2023.10.22
コメントを書く