选择两个字符串之间的字符串

时间:2014-11-11 08:01:03

标签: c#

我将XML加载到字符串param,就像这样

    <param>
  <ClientID></ClientID>
  <CarrierSCAC></CarrierSCAC>
  <StatusCode></StatusCode>
  <BatchNumber>20</BatchNumber>
  <SQL>
    ClientID<21
  </SQL>
</param>

从这个字符串中我想切出ClientID<21,我尝试过这样的事情

       int start = param.IndexOf("<SQL>") + 1;
        int end = param.IndexOf("</SQL>", start);
        string result = param.Substring(start, end - start);

但它给了我另一个像这样的结果

SQL>ClientID<21

任何人都可以指出我做错了吗?

1 个答案:

答案 0 :(得分:3)

对于您的问题,您的代码应为:

int start = param.IndexOf("<SQL>") + 5;
int end = param.IndexOf("</SQL>", start);
string result = param.Substring(start, end - start);

IndexOf返回第一次出现的索引(在您的情况下将是<字符


但是你也应该考虑用适当的模型阅读xml。所以你可以创建一个像这样的类(虽然不确定数据类型):

public class Wrapper
{
  public Model Param;
}

public class Model
{
  public string ClientID;
  public string CarrierSCAC;
  public string StatusCode;
  public int BatchNumber;
  public string SQL;
}

然后阅读输入:

var input = "<param>....</param>";
var serializer = new XmlSerializer(typeof(Wrapper));
using (TextReader reader = new StringReader(input))
{
  result = serializer.Deserialize(reader);
  var sql = result.Param.Sql; // this would be your string you are looking for
}

正如评论中的其他人已经说过:您必须确保XML有效! SQL字符串ClientID<21不是有效字符串,因为它包含<