替换子字符串

时间:2014-08-19 10:27:06

标签: c# string replace

我有一个输入字符串。我需要用另一个字符串替换它的前缀(直到第一个点)。

方法签名:     string MyPrefixReplace(字符串输入,字符串替换) 例子:

string res = MyPrefixReplace("12.345.6789", "000")
res = "000.345.6789";

res = MyPrefixReplace("908.345.6789", "1")
res = "1.345.6789";

有没有办法 在第一个点之前提取子字符串并进行替换**? 我 - 我不想要这个解决方案

int i = input.IndexOf(".");
string rep = input.Substring(0,i);
input.Replace(rep,replacer);

由于

3 个答案:

答案 0 :(得分:3)

您可以使用String.Split

public string MyPrefixReplace(string source, string value, char delimiter = '.')
{
    var parts = source.Split(delimiter);
    parts[0] = value;
    return String.Join(delimiter.ToString(), parts);   
}

Live demo

答案 1 :(得分:2)

使用String.IndexOfString.Substring是最有效的方法。在您的方法中,您使用了Substring的错误重载。 String.Replace无论如何都是毫无意义的,因为您不想替换第一部分的所有出现但仅替换第一部分。

因此,您不必采取,而是跳过第一部分并为另一部分添加前缀。这可以按预期工作:

public static string MyPrefixReplace(string input, string replacer, char prefixChar = '.')
{
    int index = input.IndexOf(prefixChar);
    if (index == -1)
        return input;
    return replacer + input.Substring(index);
}

您的意见:

string result = MyPrefixReplace("908.345.6789", "1"); // 1.345.6789
result = MyPrefixReplace("12.345.6789", "000");       // 000.345.6789

答案 2 :(得分:1)

就我个人而言,我会将字符串拆分以解决这个问题,尽管显然还有其他方法可以做到这一点,这将是我的方法:

string Input = "123.456.789"

string[] SplitInput = Input.Split('.');
SplitInput[0] = "321";

string Output = String.Join('.', SplitInput);

输出应为“321.456.789”。