如果我有一个包含三个0值的字符串,我将如何逐个抓取它们以替换它们?
0可以位于字符串中的任何位置。
我不想使用正则表达式。
要解析的示例字符串:
String myString = "hello 0 goodbye 0 clowns are cool 0";
现在我只能找到三个0值,如果它们彼此相邻的话。我用stringToParse.Replace("0", "whatever value i want to replace it with");
我希望能够用不同的值替换每个0实例...
答案 0 :(得分:4)
您可以执行this:
之类的操作var strings = myString.Split('0');
var replaced = new StringBuilder(strings[0]);
for (var i = 1; i < strings.Length; ++i)
{
replaced.Append("REPLACED " + i.ToString());
replaced.Append(strings[i]);
}
答案 1 :(得分:2)
伪郎:
s = "yes 0 ok 0 and 0"
arr = s.split(" 0")
newstring = arr[0] + replace1 + arr[1] + replace2 + arr[2] + replace3
答案 2 :(得分:1)
如果您控制了这些输入字符串,那么我将使用复合格式字符串:
string myString = "hello {0} goodbye {1} clowns are cool {2}";
string replaced = string.Format(myString, "replace0", "replace1", "replace2");
答案 3 :(得分:1)
使用LINQ和泛型函数来解耦替换逻辑。
var replace = (index) => {
// put any custom logic here
return (char) index;
};
string input = "hello 0 goodbye 0 clowns are cool 0";
string output = new string(input.Select((c, i) => c == '0' ? replace(i) : c)
.ToArray());
优点:
缺点:
答案 4 :(得分:1)
public string ReplaceOne(string full, string match, string replace)
{
int firstMatch = full.indexOf(match);
if(firstMatch < 0)
{
return full;
}
string left;
string right;
if(firstMatch == 0)
left = "";
else
left = full.substring(0,firstMatch);
if(firstMatch + match.length >= full.length)
right = "";
else
right = full.substring(firstMatch+match.length);
return left + replace + right
}
如果您的匹配可以在替换中进行,那么您将需要跟踪您的upto索引并将其传递给indexOf。