如何在 dart 中只替换字符串中的一个字符?

ee7vknir  于 2023-02-20  发布在  其他
关注(0)|答案(8)|浏览(215)

我试图替换字符串dart中的一个字符,但是找不到有效的方法。因为字符串在Dart中不是数组,所以我不能直接通过索引访问字符,也没有内置函数可以做到这一点。什么是有效的方法?
目前我正在做如下:

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

index是一个intcurrentBedStatus是我试图操作的字符串

qojgxg4l

qojgxg4l1#

在特定索引处替换:

由于dart中的String不可变的refer,因此我们无法编辑如下内容

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是 * 从零开始的 *。
chy5wohz

chy5wohz2#

您可以使用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
zaq34kh6

zaq34kh63#

您可以使用replaceAll()。

String string = 'string';
final letter='i';
final newLetter='a';
string = string.replaceAll(letter, newLetter);  // strang
von4xj4u

von4xj4u4#

使用此行,您可以将$符号替换为空格''

'${double.parse (_priced.toString (). replaceAll (' \ $ ',' ')) ?? '\ $ 0.00'}'
String x = _with.price.toString (). ReplaceAll ('\ $', '')) ?? '\ $ 0.00',
ujv3wf0j

ujv3wf0j5#

您可以在构建函数中使用它来完成此操作。

s.replaceRange(start, end, newString)
5fjcxozz

5fjcxozz6#

以下是您可以执行的操作

final singleChar = 'a';
  final characters = yourString.characters.toList();
  characters[index] = singleChar;
  yourString = characters.join('');

下面是它在String扩展方法中的样子

String replaceCharAt({required String char, required int index}) {
    final chars = characters.toList();
    chars[index] = char;
    return chars.join('');
  }
v64noz0r

v64noz0r7#

你可以使用这个函数,只是修改了Dinesh的答案

String _replaceCharAt(
          {required String character,
          required int index,
          required String oldString}) {
        if (oldString.isEmpty) {
          return character;
        } else if (index == oldString.length) {
          return oldString.substring(0, index) + character;
        } else if (index > oldString.length) {
          throw RangeError('index value is out of range');
        }
    
        return oldString.substring(0, index) +
            character +
            oldString.substring(index + 1);
      }
llew8vvj

llew8vvj8#

你也可以使用子字符串而不用担心字符,从字符串创建子字符串并使用索引。

String ourString = "OK_AY"; // original string - length of 5
String oldChar = "_"; // the character we wanna find and replace - as type string - in this case, an underscore
String newChar = "X" // the char we wanna replace underscore with
int index = ourString.indexOf(oldChar, 0); // find the index in string where our char exists (may not exist)

//some logic here to return or skip next code if char wasn't found

//oldChar found at index 0 (beginning of string)
if (index == 0) {
    ourString = newChar + ourString.substring(index+1, ourString.length);
}

//oldChar found at index 4 (end of string)
else if (index == str.length-1) {
      ourString = ourString.substring(0, index) + newChar;
}

//oldChar found anywhere else between
else {
      ourString = ourString.substring(0, index) + newChar + ourString.substring(index+1, ourString.length);
}

//done, ourString is now updated "OKXAY"

相关问题