我正在尝试提取字符串的一部分,我使用了两种模式,我感兴趣的字符串位于这两种模式的中间......但是我收到了这个错误......我在哪里失败了?
[System.ArgumentOutOfRangeException:索引和长度必须引用字符串中的某个位置。参数名称:length] at System.String.Substring(Int32 startIndex, Int32 length) at Program.Main() :line 16
这是代码
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string pattern = @"<Code>";
string _pattern = @"</Code>";
Regex regex = new Regex(pattern);
Regex _regex = new Regex(_pattern);
string str = "<?xml version=\"1.0\" encoding=\"UTF-16\" ?><Codici QuoteParams><Code>AC-ALTRE-SPESE-T</Code></Codici QuoteParams>";
var matches = regex.Matches(str);
var _matches = _regex.Matches(str);
string firstString = str.Substring(0+str.IndexOf(matches[0].ToString()),str.IndexOf(_matches[0].ToString()));
Console.WriteLine(firstString);
}
}
Run Code Online (Sandbox Code Playgroud)
String.Substring 不取开始和结束索引,而是取开始索引和长度。
因此,通常的方法是获取起始索引,然后像这样计算长度:
var start = myString.IndexOf(firstPart);
var end = myString.IndexOf(lastPart);
var length = end - start;
var substring = myString.Substring(start, length);
Run Code Online (Sandbox Code Playgroud)
对于这种特定情况,我建议您在 C# 中使用通常的 XML 功能,XDocument这比为此使用正则表达式更健壮。
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |