用更改的数据替换字符串

时间:2017-01-05 21:52:57

标签: c# regex string replace

我一直在关注加密和长话短说,我需要从字符串中删除xml标记。

每个字符串都需要一个全局规则来替换字符串,我已经为此查看了正则表达式,但它没有意义。

以下是一些例子

<BitStrength>384</BitStrength>

<BitStrength>1024</BitStrength>

<BitStrength>12300</BitStrength>

我需要替换整个字符串和里面的数字,什么也没有。 我尝试过这样的事情:

string.replace("<BitStrength>12300</BitStrength>","");

但问题是数字的长度和字符,并且找不到匹配项。 有没有人有解决方案?也许正则表达式是要走的路?

PS。优选C#中的解决方案。

编辑:我正在寻找一种解决方案,不仅可以替代整个字符串,还可以替换字符串。

<BitStrength>4633</BitStrength>
<BitStrength>336</BitStrength>
!!SomeConstantData!!5437!!EndConstant!!
I would like 2 eggs today.
I would like 17 eggs today.
I would like 258367 eggs today.

现在,如果我放string.replace("I would like ","").replace(" eggs today."),我将留下号码258367,因为我没有在我的陈述中说明这一点。我正在寻找删除此数据的解决方案。它可以是任何值。

在我的特定示例中,我希望替换<BitStrength>384</BitStrength>中的<BitStrength>384</BitStrength><RSAKeyValue><Modulus>code</Modulus><Exponent>code</Exponent></RSAKeyValue> 我面临的问题是bitstrength标签之间的数字可以是386到16384之间的任何数字,我需要删除整个bitstrength字符串。

3 个答案:

答案 0 :(得分:1)

您没有显示您尝试过的内容,我想知道失败是因为您没有使用之前的@将模式字符串作为文字字符串吗?

此示例有效:

Regex.Replace(@"Blah<BitStrength>12300</BitStrength>Blah", 
              @"(\<BitStrength\>12300\</BitStrength\>)", 
              string.Empty)

并返回

  

BlahBlah

如果实际数字无关紧要,请使用以下模式:

(\<BitStrength\>\d+\</BitStrength\>)

答案 1 :(得分:1)

这有效:

 var source = string.Join(Environment.NewLine, 
                          "<BitStrength>384</BitStrength>", 
                          "<BitStrength>1024</BitStrength>", 
                          "<BitStrength>12300</BitStrength>");

 var result = source.Replace("<BitStrength>12300</BitStrength>", string.Empty);

答案 2 :(得分:1)

Original String: <BitStrength>384</BitStrength>
Replacement String:  

返回

    <receiver android:enabled="true" android:name=".Broadcast"
                  android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>