Dart 指定した文字列が最初に見つかった位置を取得する
Dartで、指定した文字列が最初に見つかった位置を取得するコードを記述してます。「 indexOf 」に位置を取得したい文字列を指定することで可能です。
環境
- OS windows11 home
- Dart 2.18.6
指定した文字列が最初に見つかった位置を取得
指定した文字列が最初に見つかった位置を取得するには、「 indexOf 」を使用します。
文字列.indexOf(文字列)
※ 開始位置は「0」から、値が存在しない場合は「-1」が返ります
実際に、使用してみます。
void main() {
String str = 'abcde';
print(str.indexOf('a')); // 0
print(str.indexOf('b')); // 1
print(str.indexOf('ab')); // 0
}
実行結果を見ると、取得できていることが確認できます。
存在しない値を指定すると「-1」が返ります。
void main() {
String str = 'abcde';
print(str.indexOf('f')); // -1
print(str.indexOf('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 = 'abcabc';
print(str.indexOf('a',1)); // 3
print(str.indexOf('b',1)); // 1
print(str.indexOf('ab',1)); // 3
}
文字列の長さより開始位置が大きい場合はエラーとなります。
void main() {
String str = 'abcabc';
print(str.indexOf('a',7));
}
Unhandled exception:
RangeError (start): Invalid value: Not in inclusive range 0..6: 7
#0 _StringBase.indexOf (dart:core-patch/string_patch.dart:353:7)
#1 String.indexOf (dart:core-patch/string_patch.dart:1088:18)
#2 main (file:///c:/sample/main.dart:5:13)
#3 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
-
前の記事
Spyder Cellごとに実行するショートカットキー 2023.05.11
-
次の記事
java Listから指定した値が含まれているかを判定する 2023.05.12
コメントを書く