Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中提取信息_C#_Asp.net - Fatal编程技术网

C# 从字符串中提取信息

C# 从字符串中提取信息,c#,asp.net,C#,Asp.net,假设我有一个如下所示的字符串: string foo ="<add key="key1" Value="val1"/> <add key="key2" Value="val2"/> <add key="key3" Value="val3"/>" stringfoo=” " 从这个字符串中,我需要循环遍历并获取每个键值对,并对它们进行处理。 我该怎么做 谢谢这实际上是XML吗?如果是这样,请使用XML解析器。如果它是一组元素,但没有一个“根”

假设我有一个如下所示的字符串:

string foo ="<add key="key1" Value="val1"/>
    <add key="key2" Value="val2"/>
    <add key="key3" Value="val3"/>"
stringfoo=”
"
从这个字符串中,我需要循环遍历并获取每个键值对,并对它们进行处理。 我该怎么做


谢谢

这实际上是XML吗?如果是这样,请使用XML解析器。如果它是一组元素,但没有一个“根”元素,您还可以将其添加到开始和结束:

string xml = "<foo>" + foo + "</foo>";
stringxml=”“+foo+”;
然后使用XML解析器

编辑:好的,如果它是XML,您肯定应该使用XML解析器。否则,您很容易在编码值等方面遇到问题。

(1)首先删除这些字符: (2) 在“=”上拆分

请注意,使用下面的代码,处理循环值(索引超出范围..等)

编辑:

private Dictionary[] ExtractValuePair(string PString) {
    Of;
    String;
    String;
    Dictionary _dc = new Dictionary(Of, String, String);
    string[] _tmpStr;
    PString = PString.Replace("<", "").Replace(">", "").Replace("/", "").Replace('"', "").Replace("add key", "").Replace("Value", "");
    _tmpStr = PString.Split("=");
    int i;
    for (i = 1; (i 
                <= (_tmpStr.Length - 2)); i++) {
        _dc.Add(_tmpStr[i], _tmpStr[(i + 1)]);
    }
    return _dc;
}
private Dictionary[]ExtractValuePair(字符串PString){
属于
一串
一串
字典_dc=新字典(Of,String,String);
字符串[]\u tmpStr;
PString=PString.Replace(“,”).Replace(“/”,”).Replace(““,”).Replace(“添加键”,“替换”).Replace(“值”,“替换”);
_tmpStr=PString.Split(“”);
int i;
对于(i=1;(i)

字符串只是一堆xml,我只需要从中获取键和值。Jon说得对,使用xml解析器要比自己提取值容易得多。使用它的开销很小,好处也很大。如果可以通过几行字符串操作将它们提取出来,为什么要使用xml解析器,或者更糟糕的XLINQ呢那么,如果它的XML在理论上是正确的,那么值将被正确地逃脱,“Dalnter:考虑文本<代码> <代码> -你的代码将给出<代码>键:A&、B、值:AB < /代码>,而使用XML API,你可以正确地获得<代码>键:A& B,值:A/B < /代码>。关于第二种情况,即“/”,根据对我答案的评论:试试
,看看你得到了什么结果。我可以给出很多其他的断断续续的例子,但这只是一个开始……它可以停止的情况有:,/,“add key”,“Value”,尖括号可以解决,因为XML编码会转义它们,将代码改为unescape would很简单。唯一的问题是:“/”、“add key”和“Value”。这可能需要进一步编码overcome@Darknight:当一个XML解决方案只需要几行代码时,听起来需要做大量的工作。您还没有发现以前的问题-您现在有多确信自己已经解决了所有可能出现错误的问题?如何解决为了避免使用内置的XML库,您愿意花很多时间让这些都正常工作吗?您从所有这些工作中实际获得了什么好处?也许接下来您也想实现自己的字符串类?哈哈,是的,您可能是对的,我个人不认为这是一项巨大的工作。但那只是我,还有是的,我确实喜欢从头开始实现一些东西,比如我现在正在做的事情:创建一个我自己的PDF库……(尽管我知道iTextSharp+还有很多其他的东西)为了学习而重新发明轮子是一种合理的花费时间的方式。重新发明轮子来尝试想出一个更好的轮子是一种合理的花费时间的方式。我认为这两种方式都不适用于这种情况。我怀疑你不能在不到一个小时的时间内写出经过充分测试的生产就绪代码而使用LINQ到XML大约需要两分钟。