我想替換字串中出現的n個子字串。
myString = "I have a mobile. I have a cat.";
我怎樣才能更換第二have的myString
uj5u.com熱心網友回復:
這樣的事情應該作業:
String replaceNthOccurrence(String input, int n, String from, String to) {
var index = -1;
while (--n >= 0) {
index = input.indexOf(from, index);
if (index == -1) {
break;
}
}
if (index != -1) {
var result = input.replaceFirst(from, to, index);
return result;
}
return input;
}
void main() {
var myString = "I have a mobile. I have a cat.";
var replacedString = replaceNthOccurrence(myString, 2, "have", "had");
print(replacedString); // prints "I have a mobile. I had a cat."
}
uj5u.com熱心網友回復:
希望這個簡單的功能有幫助。如果您不想要函式,也可以提取函式內容。它只是兩行帶有一些 Dart 魔法的代碼
void main() {
String myString = 'I have a mobile. I have a cat.';
String searchFor='have';
int replaceOn = 2;
String replaceText = 'newhave';
String result = customReplace(myString,searchFor,replaceOn,replaceText);
print(result);
}
String customReplace(String text,String searchText, int replaceOn, String replaceText){
Match result = searchText.allMatches(text).elementAt(replaceOn - 1);
return text.replaceRange(result.start,result.end,replaceText);
}
uj5u.com熱心網友回復:
這將是一個更好的解決方案,因為它還會檢查回退。讓我列出所有場景:
- 如果位置為 0,那么它將替換所有出現的。
- 如果位置正確,那么它將在同一位置替換。
- 如果位置錯誤,則它將發回輸入字串。
- 如果輸入中不存在子字串,則它將發回輸入字串。
void main() {
String input = "I have a mobile. I have a cat.";
print(replacenth(input, 'have', 'need', 1));
}
/// Computes the nth string replace.
String replacenth(String input, String substr, String replstr,int position) {
if(input.contains(substr))
{
var splittedStr = input.split(substr);
if(splittedStr.length == 0)
return input;
String finalStr = "";
for(int i = 0; i < splittedStr.length; i )
{
finalStr = splittedStr[i];
if(i == (position - 1))
finalStr = replstr;
else if(i < (splittedStr.length - 1))
finalStr = substr;
}
return finalStr;
}
return input;
}
uj5u.com熱心網友回復:
讓我們試試這個
void main() {
var myString = "I have a mobile. I have a cat.I have a cat";
print(replaceInNthOccurrence(myString, "have", "test", 1));
}
String replaceInNthOccurrence(
String stringToChange, String searchingWord, String replacingWord, int n) {
if(n==1){
return stringToChange.replaceFirst(searchingWord, replacingWord);
}
final String separator = "#######";
String splittingString =
stringToChange.replaceAll(searchingWord, separator searchingWord);
var splitArray = splittingString.split(separator);
print(splitArray);
String result = "";
for (int i = 0; i < splitArray.length; i ) {
if (i % n == 0) {
splitArray[i] = splitArray[i].replaceAll(searchingWord, replacingWord);
}
result = splitArray[i];
}
return result;
}
這里的正則運算式
void main() {
var myString = "I have a mobile. I have a cat. I have a cat. I have a cat.";
final newString =
myString.replaceAllMapped(new RegExp(r'^(.*?(have.*?){3})have'), (match) {
return '${match.group(1)}';
});
print(newString.replaceAll(" "," had "));
}
演示鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335001.html
上一篇:我想在按下容器時更改容器顏色
