大家好,我正在寻找解决方案,以找到文本字符串之间的两个短语,但例如,不是最后一个字符串,但第一次发现。哪里:
mainString = <Message>1</Message><Message>2</Message><Messages>3</Message>
leftBracket = "<Message>"
rightBracket = "</Message>"
因为现在它返回我1
private string between2strings(string mainString, string leftBracket, string rightBracket)
{
int pFrom = mainString.IndexOf(leftBracket) + leftBracket.Length;
int pTo = mainString.LastIndexOf(rightBracket);
string result = mainString.Substring(pFrom, pTo - pFrom);
return result;
}
我想在删除联系人信息后显示所有代码,或者我应该更改读取数据的方法:
这里是完整的xml字符串,我正在尝试查找数据
<?xml version="1.0" encoding="utf-8"?>
<response>
<Count>2</Count>
<Messages>
<Message>
<Smstat>0</Smstat>
<Index>20001</Index>
<Phone>+4857782</Phone>
<Content>Test4</Content>
<Date>2021-12-11 14:24:23</Date>
<Sca>+4879096</Sca>
<SaveType>4</SaveType>
<Priority>0</Priority>
<SmsType>1</SmsType>
</Message>
<Message>
<Smstat>0</Smstat>
<Index>20000</Index>
<Phone>+4857782</Phone>
<Content>Test3</Content>
<Date>2021-12-11 14:02:48</Date>
<Sca>+4879096</Sca>
<SaveType>4</SaveType>
<Priority>0</Priority>
<SmsType>1</SmsType>
</Message>
</Messages>
</response>
我建议您使用XmlDocument
对象解析XML文档,并使用XPath表达式导航其内容。这里有一个例子
using System;
using System.Xml;
namespace Test
{
class Program
{
static void Main()
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("Test.xml");
XmlNodeList xmlNodeList = xmlDocument.SelectNodes("/response/Messages/Message");
foreach (XmlNode xmlNode in xmlNodeList)
{
Console.WriteLine(xmlNode.InnerXml);
}
}
}
}
法比奥
使用Split(String[], StringSplitOptions):
var mainString = "<Messages>1</Message><Messages>2</Message><Messages>3</Message>";
string[] parts = mainString.Split(new [] { "<Messages>", "</Messages>" },
StringSplitOptions.RemoveEmptyEntries);
这将生成数组:{“1”、“2”、“3”}
,并使选择所需条目变得容易:
string result = parts[0];
但是您可以考虑使用System中的XML处理例程。xml.Linq命名空间或Html敏捷包(也可作为Nuget包)。