5

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

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

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

所以我需要到达“0783,INSERT TEXT ”,然后在 Index Changed 事件中插入新数字。

这是一个例子: -

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

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

我希望这是有道理的家伙?

4

4 回答 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);
于 2012-09-25T12:03:03.810 回答
1

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

这样,您不必担心字符串中的内容也不必弄乱数组索引。你也可以免受魔法数字/字符串的伤害,这些数字/字符串在未来的某个时候一定会在你的脸上爆炸。

于 2012-09-25T12:01:57.200 回答
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);
于 2012-09-25T12:01:44.997 回答
0

使用 Regex.Split by token "0783," 然后在数组中的第二个字符串中返回 split by token "," 字符串数组中的第一个元素将是您插入新文本的位置。然后使用 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);
于 2012-09-25T12:03:50.700 回答