C#检查字符串中的无效字符串

时间:2014-09-09 12:02:21

标签: c# string

我正在尝试将xml文件加载到字符串中,如下所示:

System.IO.StreamReader myFile = new System.IO.StreamReader(@"C:\Users\kuruvilla.philip\Desktop\Files\sample1.xml");
String myString = myFile.ReadToEnd();

但是我需要检查&中加载的字符串中是否存在mystring的非法变体。 例如:&P(它总是需要&没有空格)

所以我需要在上述情况下纠正它,并在每次出现时将其更新为&

如何做到这一点?

3 个答案:

答案 0 :(得分:1)

使用正则表达式替换&后跟chars &

的任意组合
Regex r = new Regex("&[^\\s]*");
r.Replace("&p bla & bla &ohnoes", "&")

输出:& bla & bla &

正则表达式寻找匹配

  • &
  • 开头
  • 后跟任何不是空格的字符

当然这是一个非常具有包容性的正则表达式,您可能需要调整它以忽略不需要替换的合法元素

答案 1 :(得分:0)

你试过吗

string.Contains();

简单的例子是

string someString = "StackOverflow&P";
bool isIllegal = someString.Contains("&P");
// Do something when isIllegal is true

然后只需使用string.Replace()

答案 2 :(得分:0)

我会避免使用str.Contains(),因为它不会返回索引数组,这意味着您只会知道这些非法字符串是否存在,而不是它在字符串中的位置。

我实际上只是"暴力"这样:

**#Psuedo Code!#**
String myString = myFile.ReadToEnd();
for i=0, i<length(myString):
   if myString[i] == '&':
       if ....
       //do your tests here. for example, check that myString[i+1, i+3] is indeed "amp".
       else.... 
       //the test failed, illegal expression found. replace the substring using str.Replace()