Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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# 在2个子字符串之间拆分字符串而不删除分隔符_C#_Wpf_String_Delimiter - Fatal编程技术网

C# 在2个子字符串之间拆分字符串而不删除分隔符

C# 在2个子字符串之间拆分字符串而不删除分隔符,c#,wpf,string,delimiter,C#,Wpf,String,Delimiter,我有一根像 "<Canvas Background="#FF00FFFF" Name="Page_1" Width="1200" Height="900" ><TextBlock Name="PageTitle" /></Canvas><Canvas Background="#FF00FFFF" Name="Page_2" Width="1200" Height="900"><TextBlock Name="PageTitle" />&

我有一根像

"<Canvas Background="#FF00FFFF" Name="Page_1" Width="1200" Height="900" ><TextBlock Name="PageTitle" /></Canvas><Canvas Background="#FF00FFFF" Name="Page_2" Width="1200" Height="900"><TextBlock Name="PageTitle" /></Canvas>"
“”
我想把这个字符串分成一个数组

[< Canvas Background="#FF00FFFF" Name="Page_1" Width="1200" Height="900" >< TextBlock Name="PageTitle" />< /Canvas>],

[< Canvas Background="#FF00FFFF" Name="Page_2" Width="1200" Height="900">< TextBlock Name="PageTitle" />< /Canvas>]
[],
[]
但是当我使用

objectsAsStrings = contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None);
objectsassstrings=contents.Split(新字符串[]{”/Canvas>试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
string mailstring=“试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
string mailstring=“试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
string mailstring=“试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}

string mailstring=“或者,您可以像这样使用XML解析器:

string xml = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
xml = "<Outer>" + xml + "</Outer>";
XDocument doc = XDocument.Parse(xml);
string[] array = doc.Descendants("Canvas").Select(item => item.ToString(SaveOptions.DisableFormatting)).ToArray();
此代码的输出为:

Background = #FF00FFFF
Name = Page_1
Width = 1200
Height = 900
TextBlockName = PageTitle1

Background = #FF00FFFF
Name = Page_2
Width = 1200
Height = 900
TextBlockName = PageTitle2

或者,您可以使用如下XML解析器:

string xml = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
xml = "<Outer>" + xml + "</Outer>";
XDocument doc = XDocument.Parse(xml);
string[] array = doc.Descendants("Canvas").Select(item => item.ToString(SaveOptions.DisableFormatting)).ToArray();
此代码的输出为:

Background = #FF00FFFF
Name = Page_1
Width = 1200
Height = 900
TextBlockName = PageTitle1

Background = #FF00FFFF
Name = Page_2
Width = 1200
Height = 900
TextBlockName = PageTitle2

或者,您可以使用如下XML解析器:

string xml = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
xml = "<Outer>" + xml + "</Outer>";
XDocument doc = XDocument.Parse(xml);
string[] array = doc.Descendants("Canvas").Select(item => item.ToString(SaveOptions.DisableFormatting)).ToArray();
此代码的输出为:

Background = #FF00FFFF
Name = Page_1
Width = 1200
Height = 900
TextBlockName = PageTitle1

Background = #FF00FFFF
Name = Page_2
Width = 1200
Height = 900
TextBlockName = PageTitle2

或者,您可以使用如下XML解析器:

string xml = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
xml = "<Outer>" + xml + "</Outer>";
XDocument doc = XDocument.Parse(xml);
string[] array = doc.Descendants("Canvas").Select(item => item.ToString(SaveOptions.DisableFormatting)).ToArray();
此代码的输出为:

Background = #FF00FFFF
Name = Page_1
Width = 1200
Height = 900
TextBlockName = PageTitle1

Background = #FF00FFFF
Name = Page_2
Width = 1200
Height = 900
TextBlockName = PageTitle2

使用
Split
,然后迭代数组,并将
插入到除最后一项之外的所有项的末尾

contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
objectsAsStrings = contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None);

for(var i = 0; i < objectsAsStrings.Length; i++)
{
    if( 0 < i) objectsAsStrings[i] = "<Canvas" + objectsAsStrings[i];
    if( i < objectsAsStrings.Length-1) objectsAsStrings[i] = objectsAsStrings[i] + "/Canvas>";
}
contents=”“;

objectsAsStrings=contents.Split(新字符串[]{”/Canvas>使用
Split
,然后迭代数组,并将
插入到除最后一项之外的所有项的末尾

contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
objectsAsStrings = contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None);

for(var i = 0; i < objectsAsStrings.Length; i++)
{
    if( 0 < i) objectsAsStrings[i] = "<Canvas" + objectsAsStrings[i];
    if( i < objectsAsStrings.Length-1) objectsAsStrings[i] = objectsAsStrings[i] + "/Canvas>";
}
contents=”“;

objectsAsStrings=contents.Split(新字符串[]{”/Canvas>使用
Split
,然后迭代数组,并将
插入到除最后一项之外的所有项的末尾

contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
objectsAsStrings = contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None);

for(var i = 0; i < objectsAsStrings.Length; i++)
{
    if( 0 < i) objectsAsStrings[i] = "<Canvas" + objectsAsStrings[i];
    if( i < objectsAsStrings.Length-1) objectsAsStrings[i] = objectsAsStrings[i] + "/Canvas>";
}
contents=”“;

objectsAsStrings=contents.Split(新字符串[]{”/Canvas>使用
Split
,然后迭代数组,并将
插入到除最后一项之外的所有项的末尾

contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
objectsAsStrings = contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None);

for(var i = 0; i < objectsAsStrings.Length; i++)
{
    if( 0 < i) objectsAsStrings[i] = "<Canvas" + objectsAsStrings[i];
    if( i < objectsAsStrings.Length-1) objectsAsStrings[i] = objectsAsStrings[i] + "/Canvas>";
}
contents=”“;
objectsassstrings=contents.Split(新字符串[]{“/Canvas>@Najib是对的

但你永远不知道你会得到多少子串。。。。。。。。。 因此

而不是

string part1 = substrings[0] + splitor;
string part2 = substrings[1] + splitor;
试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
(inti=0;i)的
@Najib是对的

但你永远不知道你会得到多少子串。。。。。。。。。 因此

而不是

string part1 = substrings[0] + splitor;
string part2 = substrings[1] + splitor;
试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
(inti=0;i)的
@Najib是对的

但你永远不知道你会得到多少子串。。。。。。。。。 因此

而不是

string part1 = substrings[0] + splitor;
string part2 = substrings[1] + splitor;
试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}
(inti=0;i)的
@Najib是对的

但你永远不知道你会得到多少子串。。。。。。。。。 因此

而不是

string part1 = substrings[0] + splitor;
string part2 = substrings[1] + splitor;
试试这个

string mailstring = "<Canvas Background='#FF00FFFF' Name='Page_1' Width='1200' Height='900' ><TextBlock Name='PageTitle' /></Canvas><Canvas Background='#FF00FFFF' Name='Page_2' Width='1200' Height='900'<TextBlock Name='PageTitle' /></Canvas>";
            string splitor = "</Canvas>";
            string[] substrings = mailstring.Split(new string[] { splitor }, StringSplitOptions.None);
            string part1 = substrings[0] + splitor;
            string part2 = substrings[1] + splitor;
for(int i=0;i<substrings.Lenght;i++)
{
    substrings[i]+=splitor;
}

for(int i=0;i不确定使用linq进行字符串操作是否合适,但这里有另一种方法:

var contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
var a = from word in contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None) select word;
var b = from word in a where word == a.First() select word.Replace("<Canvas","");
var c = from word in a where word == a.Last() select word.Replace("/Canvas>","");
var d = from word in a where word != a.Last() && word != a.First() select word;
var result = b.Concat(d).Concat(c).Select(f => "<Canvas" + f + "/Canvas>");`
var contents=”“;

var a=from contents.Split(新字符串[]{“/Canvas>不确定使用linq处理该字符串是否合适,但这里有另一种方法:

var contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
var a = from word in contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None) select word;
var b = from word in a where word == a.First() select word.Replace("<Canvas","");
var c = from word in a where word == a.Last() select word.Replace("/Canvas>","");
var d = from word in a where word != a.Last() && word != a.First() select word;
var result = b.Concat(d).Concat(c).Select(f => "<Canvas" + f + "/Canvas>");`
var contents=”“;

var a=from contents.Split(新字符串[]{“/Canvas>不确定使用linq处理该字符串是否合适,但这里有另一种方法:

var contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
var a = from word in contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None) select word;
var b = from word in a where word == a.First() select word.Replace("<Canvas","");
var c = from word in a where word == a.Last() select word.Replace("/Canvas>","");
var d = from word in a where word != a.Last() && word != a.First() select word;
var result = b.Concat(d).Concat(c).Select(f => "<Canvas" + f + "/Canvas>");`
var contents=”“;

var a=from contents.Split(新字符串[]{“/Canvas>不确定使用linq处理该字符串是否合适,但这里有另一种方法:

var contents = "<Canvas Background=\"#FF00FFFF\" Name=\"Page_1\" Width=\"1200\" Height=\"900\" ><TextBlock Name=\"PageTitle\" /></Canvas><Canvas Background=\"#FF00FFFF\" Name=\"Page_2\" Width=\"1200\" Height=\"900\"><TextBlock Name=\"PageTitle\" /></Canvas>";
var a = from word in contents.Split(new string[] { "/Canvas><Canvas" }, StringSplitOptions.None) select word;
var b = from word in a where word == a.First() select word.Replace("<Canvas","");
var c = from word in a where word == a.Last() select word.Replace("/Canvas>","");
var d = from word in a where word != a.Last() && word != a.First() select word;
var result = b.Concat(d).Concat(c).Select(f => "<Canvas" + f + "/Canvas>");`
var contents=”“;

var a=来自contents.Split中的单词(新字符串[]{"/Canvas>xaml文件内容基本上都是xml。为此,您应该使用xml解析器。您可以看看linq to xml。为什么不使用xml解析器呢。这会很好,但是xml解析器会抛出一个异常,因为字符串包含两个同名的文本块。因为我只想将画布保存到字典中,这没有问题,但是xml解析器抱怨…xml解析器不应该关心Textblocks的Name属性值。可能的问题是,您发布的字符串不是有效的xml,而是xml片段。有效的xml只有一个包含内容的根元素。您可以将xml片段包装在根元素中,然后尝试解析.xaml文件内容基本上都是xml。为此,您应该使用xml解析器。您可以看看linq to xml。为什么不使用xml解析器呢。这将是非常好的,但是xml解析器会抛出一个异常,因为字符串包含两个同名的文本块。因为我只想将画布保存到字典中,这没有问题,但是xml解析器抱怨…xml解析器不应该关心Textblocks的Name属性值。可能的问题是,您发布的字符串不是有效的xml,而是xml片段。有效的xml只有一个包含内容的根元素。您可以将xml片段包装在根元素中,然后尝试解析。xaml file内容基本上是xml。为此,您应该使用xml解析器。您可以看看linq to xml。为什么不使用xml解析器呢。这可能会很奇怪,但xml解析器会抛出一个异常,因为字符串包含两个同名的文本块。因为我只想将画布保存到字典中,这没有问题,但是xml解析器抱怨…xml解析器不应该关心Textblocks的Name属性值。可能的问题是,您发布的字符串不是有效的xml,而是xml片段。有效的xml只有一个包含内容的根元素。您可以将xml片段包装在根元素中,然后尝试解析.xaml文件帐篷基本上是xml。你应该为此使用xml解析器。你可以看看linq to xml。为什么不使用xml解析器呢。那太好了,但是xml解析器会抛出一个异常,因为字符串包含两个同名的文本块。因为我只想将画布保存到字典中,这没有问题,但xml解析器会抱怨ins…xml解析器不应该关心Textblocks的Name属性的值。可能的问题是,您发布的字符串不是有效的xml,而是xml片段。有效的xml只有一个根元素,其中包含