字符串查找和替换方法

5
我需要定位字符串值中的特定部分,如下所示,我需要将“Meeting ID”更改为特定数字。

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

字符串中的“0783,”部分永远不会改变,“Meeting ID”始终跟随“,”。

所以我需要到达“0783,插入文本,”然后在索引更改事件上插入新数字。

以下是一个例子:

商业邀请函,开始时间,M问题,518-06-xxx,9999 999 0783,Meeting ID,xxx ??

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

希望我的解释清晰易懂。

4个回答

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);

这看起来像个好主意,我有机会就试试!谢谢。 - Derek
没问题 @Derek,我很高兴能够帮助! - Mike Perrenoud

1
你应该将你的“当前”会议ID存储在一个变量中,随着用户的操作而改变,然后在需要字符串时使用同一个全局变量。
这样,你就不必担心字符串内部的内容,也不需要处理数组索引。你还可以避免魔法数字/字符串,它们注定会在未来某个时刻爆炸。

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);

0
使用 Regex.Split 按照 "0783," 分割字符串,然后在数组的第二个字符串中按照 "," 再次分割,字符串数组的第一个元素就是你要插入新文本的位置。接着使用 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接