String Find&替换方法

时间:2012-09-25 11:54:27

标签: c# string

我需要找到一个字符串值的特定部分,如下所示,我需要将“会议ID”更改为特定的数字。

这个数字来自多个数字的下拉列表,所以我不能简单地使用find&更换。因为在用户满意之前,文本可能会更改为多个数字之一。

“0783”字符串的一部分永远不会改变,“会议ID”后面总是跟着“,”。

  

所以我需要进入“0783, INSERT TEXT ”,然后在Index Changed事件中插入新号码。

以下是一个例子: -

  

商务邀请,开始时间,M问题,518-06-xxx,9999 999   0783,会议ID ,xxx ??

每次查找此字符串并替换测试的最佳方法是什么?

我希望这对你有意义吗?

4 个答案:

答案 0 :(得分:3)

好的,所以有几种方法可以做到这一点,但这似乎是一个你可以控制的字符串,所以我会说这是你想要做的。

var myString = string.Format("Business Invitation, start time, M Problem, 518-06-xxx, 9999 999 0783, {0}, xxx ??", yourMeetingId);

如果你无法控制它,那么你将不得不变得更加聪明:

var startingIndex = myString.IndexOf("0783, ");
var endingIndex = myString.IndexOf(",", startingIndex + 6);
var pattern = myString.Substring(startingIndex + 6, endingIndex - (startingIndex + 6));
myString = myString.Replace(pattern, yourMeetingId);

答案 1 :(得分:1)

您应该将“当前”Meeting ID存储在变量中,并将其与用户的操作一起更改,然后在需要字符串时使用相同的全局变量。

这样,您不必担心字符串中的内容和不需要乱七八糟的数组索引。你也可以安全地使用魔法数字/字符串,这些数字/字符串在将来的某个时刻肯定会在你的脸上爆炸。

答案 2 :(得分:0)

您可以尝试使用Regex.Replace方法

    string pattern = @"\d{3},";
    Regex regex = new Regex(pattern);

    var inputStr = "518-06-xxx, 9999 999 0783";
    var replace = "..."
    var outputStr = regex.Replace(inputStr, replace);

答案 3 :(得分:0)

通过令牌“0783”使用Regex.Split,然后在数组中的第二个字符串中通过标记“,”返回拆分,字符串数组中的第一个元素将是您插入新文本的位置。然后使用string.Join将第一个拆分与“0783”连接,并使用“,”连接第二个拆分。

        string temp = "Business Invitation, start time, M Problem, 518-06-xxx, 9999 999 0783, Meeting ID, xxx ??";
        string newID = "1234";
        string[] firstSplits = Regex.Split(temp, "0783,");
        string[] secondSplits = Regex.Split(firstSplits[1], ",");
        secondSplits[0] = newID;
        string @join = string.Join(",", secondSplits);
        firstSplits[1] = @join;

        string newString = string.Join("0783,", firstSplits);