3

,配列括弧内[]の文字を別の文字、たとえば、に置き換える方法を知りたいのですが.。私が持っている文字列式は次のとおりです。

属性["412324-ペンシルベニアI-95"、 "カテゴリ"]。値、属性["412324-ペンシルベニアI-95"、"カテゴリ"]。Code

期待される出力は次のとおりです。

属性["412324-ペンシルベニアI-95"。"Category"]。Value、Attributes ["412324--PENNDOTI-95"。"カテゴリ"]。コード

4

2 に答える 2

6
var regex = new Regex(@"(?<=\[[^\[\]]*),(?=[^\[\]]*\])");
return regex.Replace(<your sample string>, ".");

正規表現パターン内の左側には、,ゼロ幅アサーションの後ろにポジティブなルックビハインドがあります。これは、コンマに至っていない、またはコンマに至っていない、0個以上の文字が存在する必要があることを意味し[ます。[]

[コンマの後に、正の先読みゼロ幅アサーションが]あります。これは、ゼロ以上の文字が存在する可能性があることを意味します]

ゼロ幅アサーションは、パターンが一致したテキストの前または後になければならないが、一致の一部ではないことを意味します。私たちは一致しているだけなので、,私たちの交換はただ.

于 2012-04-10T05:29:16.433 に答える
0

それが常にこのシェムにある場合、より高速になるのはString.Replace:です。

string sin = "Attributes["412324 - PENNDOT I-95", "Category"].Value, Attributes["412324 - PENNDOT I-95", "Category"].Code";
string sout = sin.Replace("\", \"","\". \"");

RegExでも同じことができますが、速度が遅くなり、入力文字列が構造を変更すると破損する可能性があります。

于 2012-04-10T05:29:02.253 に答える