【发布时间】:2012-08-13 06:42:08
【问题描述】:
我有一个字符串变量,下面是它的内容:
.....
数据元素 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
谁能建议我任何其他清洁方法?
【问题讨论】:
-
是什么让你认为现有的逻辑是肮脏的,而正则表达式是干净的?
-
因为它的行太多了。我欢迎其他方法,不一定是正则表达式
-
使用String.Replace 你不需要正则表达式。这行得通吗?
-
@AkshayJ 你能显示“太多行”吗?我们可以从那里开始。
-
@AkshayJ 你在哪里更改版本?