我需要找到一个字符串值的特定部分,如下所示,我需要将“会议ID”更改为特定的数字。
这个数字来自多个数字的下拉列表,所以我不能简单地使用find&更换。因为在用户满意之前,文本可能会更改为多个数字之一。
“0783”字符串的一部分永远不会改变,“会议ID”后面总是跟着“,”。
所以我需要进入“0783, INSERT TEXT ”,然后在Index Changed事件中插入新号码。
以下是一个例子: -
商务邀请,开始时间,M问题,518-06-xxx,9999 999 0783,会议ID ,xxx ??
每次查找此字符串并替换测试的最佳方法是什么?
我希望这对你有意义吗?
答案 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);