C# 带字符串的子字符串,返回字符串中两个单词之间的值
我从Telnet缓冲区获得如下字符串: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 |” 我想选择两个指示器和之间的所有内容,在本例中,这两个指示器的
"<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>");