Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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#_String - Fatal编程技术网

C# 将一个字符串拆分为另一个字符串

C# 将一个字符串拆分为另一个字符串,c#,string,C#,String,我得到了一个字符串,需要用另一个字符串来分隔,这个字符串是原始字符串的子字符串。假设我得到了以下文本: string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>" 我需要把绳子系在他和他的储物柜之间 即使其中一个函数参数的类型为string[],我也无法使用常用的string拆分方法来实现这一点。我尝试的是: Console.Write(s.Split("&l

我得到了一个字符串,需要用另一个字符串来分隔,这个字符串是原始字符串的子字符串。假设我得到了以下文本:

string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>"
我需要把绳子系在他和他的储物柜之间

即使其中一个函数参数的类型为string[],我也无法使用常用的string拆分方法来实现这一点。我尝试的是:

Console.Write(s.Split("<TEXT>")); // Which doesn't compile
提前感谢您的善意帮助。

在这种情况下,打开并不会对您有所帮助,因为关闭标签是

var start = s.IndexOf("<TEXT>");
var end = s.IndexOf("</TEXT>", start+1);
string res;
if (start >= 0 && end > 0) {
    res = s.Substring(start, end-start-1).Trim();
} else {
    res = "NOT FOUND";
}
最健壮的解决方案是将其正确地解析为XML。C提供了这样做的功能。上的第二个示例应该会让您走上正确的道路

然而,如果你只是在寻找一个快速而肮脏的一次性解决方案,你最好的选择是手工编写一些东西,比如上面dasblinkenlight的解决方案。

在这种情况下,拆分不会对你有任何帮助,因为关闭标记是无效的

最健壮的解决方案是将其正确地解析为XML。C提供了这样做的功能。上的第二个示例应该会让您走上正确的道路

然而,如果您只是在寻找一个快速而肮脏的一次性解决方案,那么最好的办法就是手工编写一些代码,比如上面dasblinkenlight的解决方案。

如果最后一个标记是,那么您可以使用它来加载XML,然后通过它来发现想要的元素,您也可以使用Linq to XML

如果这不一定是正确的XML字符串,您可以始终使用正则表达式来查找所需的文本部分。在这种情况下,表达式应该不难自己编写

若最后一个标记是,那个么您可以使用它来加载XML,然后遍历它来发现所需的元素,您也可以使用Linq to XML

string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>";
string result = Regex.Match(s, "(?<=<TEXT>).*?(?=</TEXT>)").Value;
如果这不一定是正确的XML字符串,您可以始终使用正则表达式来查找所需的文本部分。在这种情况下,表达式应该不难自己编写

string s = "<DOC>something here <TEXT> and some stuff here </TEXT></DOC>";
string result = Regex.Match(s, "(?<=<TEXT>).*?(?=</TEXT>)").Value;
编辑:我正在使用这个正则表达式模式?
编辑:我正在使用这个正则表达式模式?是最后一个标记还是?你是对的。。。。doc我会编辑它你的例子表明你不是在分裂,而是在提取。看起来很像XML。如果是,请在XDocument中加载它,并在XML DOM上执行xpath选择。不幸的是,它不是XML是最后一个标记,或者?你是对的。。。。doc我会编辑它你的例子表明你不是在分裂,而是在提取。看起来很像XML。如果是,请在XDocument中加载它,并在XML DOM上执行xpath选择。不幸的是,这不是XML。end的indexOf应该从start的值开始搜索。end的indexOf应该从start的值开始搜索。我需要获得一组结果。是否有某种方式可以通过这种方式获得大量结果。。。我的字符串包含了很多我需要获得一对结果有什么方法可以通过这种方式获得很多结果。。。我的字符串包含了大量的输出列表内容,但不包含任何内容。非常感谢您的帮助。输出列表内容不包含任何内容。非常感谢您的帮助
MatchCollection matches = Regex.Matches(s, "(?<=<TEXT>).*?(?=</TEXT>)");
foreach (Match match in matches) {
    Console.WriteLine(match.Value);
}
var output = new List<String>();
foreach (Match match in Regex.Matches(source, "<TEXT>(.*?)</TEXT>")) {
    output.Add(match.Groups[1].Value);
}