当前位置: 首页 > 知识库问答 >
问题:

在2个字符串之间查找,但最后一个索引应该首先找到C#

孟振
2023-03-14

大家好,我正在寻找解决方案,以找到文本字符串之间的两个短语,但例如,不是最后一个字符串,但第一次发现。哪里:

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>

共有2个答案

芮瑾瑜
2023-03-14

使用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包)。

伯庆
2023-03-14

我建议您使用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);
            }
        }

    }
}

法比奥

 类似资料:
  • 我对RegEx-es和类似的搜索模式非常缺乏经验,而且我所尝试的每一种方法都不能正常工作(大多数情况下会导致)。 找到字符串中最后一组数字开始的索引的可靠而简单的方法是什么?

  • 我需要一点帮助来查找字符串中最后一个大写字符的最后一个索引 我一直在使用regex这样做。 它怎么会一直返回-1而不是B的索引7 代码突出显示在下面 有没有人对如何解决这个问题有什么建议?

  • 问题内容: 给定两个相等长度的字符串,是否有一种优雅的方法来获取第一个不同字符的偏移量? 显而易见的解决方案是: 但这对于如此简单的任务而言似乎并不正确。 问题答案: 您可以使用按位XOR()的一个不错的属性来实现此目的:基本上,当您将两个字符串异或时,相同的字符将变为空字节()。因此,如果我们对两个字符串进行异或运算,我们只需要使用以下命令找到第一个非空字节的位置: 这里的所有都是它的。因此,让

  • 问题内容: 我有绳子。我想找到最后一个/来分割字符串。最初的尝试是:但这很明显。有人给小费吗? 问题答案: 您是否需要为此使用正则表达式?将字符串。lastIndexOf(“ /”) 工作来查找索引,然后将String.substring(int start,int end) 与结果一起使用?还是您的实际数据不同且更加复杂,需要使用正则表达式?使用您提供的在最后一个/处分割字符串的代码,这里是代码

  • 问题内容: 这是一些示例输入: 我想提取代表实际类型的字符串。所以我的输出是: 这是我到目前为止使用的正则表达式(因为它是Java语言,所以进行了两次转义): 它适用于,但不适用于其他两个。我认为最好的解决方案是基本上说“在最后一个冒号之后得到所有内容”,但我不确定如何做。请注意,它还必须包含这些内容。 问题答案: 您不需要正则表达式: 只需找到最后一个,然后把所有东西都拿走。然后修剪它以删除前导

  • 问题内容: 如何找到两个子字符串之间的字符串? 我当前的方法是这样的: 但是,这似乎效率很低而且不合Python。什么是做这样的更好的方法? 忘了提:该字符串可能无法启动,并最终和。他们之前和之后的字符可能更多。 问题答案: