web-dev-qa-db-ja.com

Dartで文字列の1文字だけを置き換える方法は?

文字列Dartの1文字だけを置き換えようとしていますが、効率的な方法を見つけることができません。 Dartでは文字列が配列ではないため、インデックスで文字に直接アクセスすることはできず、それを実行できる組み込み関数はありません。それを行う効率的な方法は何ですか?

現在私はそれを以下のようにしています:

List<String> bedStatus = currentBedStatus.split("");
   bedStatus[index]='1';
   String bedStatusFinal="";
   for(int i=0;i<bedStatus.length;i++){
      bedStatusFinal+=bedStatus[i];
   }
}

インデックスはintおよびcurrentBedStatusstringです操作しようとしています。

4
Anuran Barman

replaceFirst()を使用できます。

final myString = 'hello hello';
final replaced = myString.replaceFirst(RegExp('e'), '*');  // h*llo hello

または、最初のものを置き換えたくない場合は、開始インデックスを使用できます。

final myString = 'hello hello';
final startIndex = 2;
final replaced = myString.replaceFirst(RegExp('e'), '*', startIndex);  // hello h*llo
4
Suragch

特定のインデックスで置換:

DartのStringimmutablerefer なので、次のように編集することはできません

stringInstance.setCharAt(index, newChar)

要件を満たす効率的な方法は次のようになります:

String hello = "hello";
String hEllo = hello.substring(0, 1) + "E" + hello.substring(2);
print(hEllo); // prints hEllo

関数に移行する

String replaceCharAt(String oldString, int index, String newChar) {
  return oldString.substring(0, index) + newChar + oldString.substring(index + 1);
}
replaceCharAt("hello", 1, "E") //usage

注:上記の関数のindexゼロベースです