0

我有一个字符串变量,以下是它的内容:

.....
DataElement deAbtVersionNum
m_AttrParent commercialcardsys::CommercialCardInt
m_AttrGUIFieldLabel "WEX_CI 3.02.01P20.1" appsys30::lngDbb
m_AttrdbType "char"
.....

正如 ... 所示,可能还有其他文本。

在第三行中,我们有“WEX_CI 3.02.01P20.1”(这是从底部开始唯一存在 WEX.. 的地方。)

我需要用新版本替换 3.02.01P20.1(完全),比如 3.02.01P20.1.NEW

我已经能够使用一种肮脏的方法来做到这一点,该方法查找“Wex 然后找到下一个”的索引,等等。

                int start = CItext.LastIndexOf("\"WEX") + 1;
                int end = CItext.IndexOf("\"", start);
                string text = CItext.Substring(start, end - start + 1);

                string[] parts = text.Split(new Char[] { ' ' });
                string editedText = parts[0] + " " + LabelName;
                CItext = CItext.Replace(text, editedText);

CIText 是我必须编辑的字符串。LabelName 是我要放置的字符串,而不是 3.02.01P20.1

谁能建议我任何其他清洁方法?

4

2 回答 2

0

我认为您可以使用带有“前瞻”的正则表达式。试试这个。

var result = Regex.Replace(text, "(?<=WEX_CI )[^\"]+", "NEW", RegexOptions.Multiline);
于 2012-08-13T08:12:23.190 回答
0

试试这个正则表达式

var result =   Regex.Replace(text,@"(WEX_CI[\s][\da-zA-Z\.]+)","$1.NEW");
于 2012-08-13T09:04:52.753 回答