0

文字列変数があり、その内容は次のとおりです。

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

... が示すように、他のテキストもあるかもしれません。

3 行目には「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 に答える