Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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#_.net_Regex_String_Substring - Fatal编程技术网

C# 带字符串的子字符串,返回字符串中两个单词之间的值

C# 带字符串的子字符串,返回字符串中两个单词之间的值,c#,.net,regex,string,substring,C#,.net,Regex,String,Substring,我从Telnet缓冲区获得如下字符串: "<CONNECTED><SENDING_VIDEO_LIST><START_VIDEO_LIST>test.mp4|test_3.mp4|test_2.mp4|<END_VIDEO_LIST><PLAYING_test.mp4_STARTED>" “test.mp4 | test|u 3.mp4 | test|u 2.mp4 |” 我想选择两个指示器和之间的所有内容,在本例中,这两个指示器的

我从Telnet缓冲区获得如下字符串:

"<CONNECTED><SENDING_VIDEO_LIST><START_VIDEO_LIST>test.mp4|test_3.mp4|test_2.mp4|<END_VIDEO_LIST><PLAYING_test.mp4_STARTED>"
“test.mp4 | test|u 3.mp4 | test|u 2.mp4 |”
我想选择两个指示器
之间的所有内容,在本例中,这两个指示器的作用是:

test.mp4 | test|u 3.mp4 | test|u 2.mp4 |


有没有一种不操纵整个字符串的有效方法?

如果需要,可以使用
regex

<START_VIDEO_LIST>([^<]*)<END_VIDEO_LIST>
([^没有正则表达式(可能效率较低),您可以使用以下方法:

string s = "<CONNECTED><SENDING_VIDEO_LIST><START_VIDEO_LIST>test.mp4|test_3.mp4|test_2.mp4|<END_VIDEO_LIST><PLAYING_test.mp4_STARTED>";
string start = "<START_VIDEO_LIST>";
string end = "<END_VIDEO_LIST>";
int i1 = s.IndexOf(start);
int i2 = s.IndexOf(end);
string result = s.Substring(i1 + start.Length, i2 - i1 - start.Length);
Console.WriteLine(result);

这里有一个。

这里有一个非正则表达式选项:

string GetContents(string full, string start, string end)
{
    int s = full.IndexOf(start) + start.Length;
    int e = full.IndexOf(end);
    int length = e - s;

    //validate the index and length to ensure Substring wont throw an error (unless you want that of course)
    if (s < 0 || length > full.Length - s)
            return null;

    return full.Substring(s, length);
}
string GetContents(字符串已满、字符串开始、字符串结束)
{
ints=full.IndexOf(start)+start.Length;
int e=完整的索引(结束);
int-length=e-s;
//验证索引和长度以确保子字符串不会抛出错误(当然,除非您希望这样)
如果(s<0 | |长度>全长-s)
返回null;
返回完整的子字符串(s,长度);
}
你可以这样称呼它:

string result = GetContents(input, "<START_VIDEO_LIST>", "<END_VIDEO_LIST>");
string result=GetContents(输入“,”);
注意:这将是明智的有效输入

string result = GetContents(input, "<START_VIDEO_LIST>", "<END_VIDEO_LIST>");