C# 截取字符串 急急急!!

wanglf84 2011-03-05 12:36:00
把下列字符串截取为2个字符串:
str=<Data schema="PUBTRANSPACTREC">
<PUBTRANSPACTREC>
<ID>1772038</ID>
<CODE>200908120009</CODE>
</PUBTRANSPACTREC>
<PUBTRANSPACTREC>
<ID>1772040</ID>
<CODE>200908120010</CODE>
</PUBTRANSPACTREC>
</Data>;

==>str1=<PUBTRANSPACTREC>
<ID>1772038</ID>
<CODE>200908120009</CODE>
</PUBTRANSPACTREC>;
str2=<PUBTRANSPACTREC>
<ID>1772040</ID>
<CODE>200908120010</CODE>
</PUBTRANSPACTREC>

大家帮忙啊
...全文
145 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
youcaihua123 2011-03-05
  • 打赏
  • 举报
回复
9楼的正解
wanglf84 2011-03-05
  • 打赏
  • 举报
回复
谢谢大家,我用了笨方法解决了,但还是谢谢

string str1 = "<Data schema=\"PUBTRANSPACTREC\">"
+ " <PUBTRANSINREC> <ID>102</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+ " <PUBTRANSINREC> <ID>103</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+ " </Data> ";
if (str != "")
{
string[] strArray = str.Split(new string[] { "<PUBTRANSPACTREC>" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 1; i < strArray.Length; i++)
{
if (i != strArray.Length - 1)
{
string strXml = "<PUBTRANSPACTREC>" + strArray[i];
addTransPactXmlData(strXml);
}
else
{
string[] strArray1 = strArray[i].Split(new string[] { "</Data>" }, StringSplitOptions.RemoveEmptyEntries);
string strXml = "<PUBTRANSPACTREC>" + strArray1[0];
addTransPactXmlData(strXml);
}
}
}

public void addTransPactXmlData(string str)
{
PUBTRANSPACTREC transIn = new PUBTRANSPACTREC();
MemoryStream ms = new MemoryStream();
StreamWriter sr = new StreamWriter(ms, System.Text.Encoding.UTF8);
sr.Write(str);
sr.Flush();
ms.Seek(0, SeekOrigin.Begin);
XmlSerializer xmlSer = new XmlSerializer(typeof(PUBTRANSPACTREC));
transIn = (PUBTRANSPACTREC)xmlSer.Deserialize(ms);
//int num = transIn.addTransPactInfo();

}
wanglf84 2011-03-05
  • 打赏
  • 举报
回复
谢谢大家,我用了笨方法解决了,但还是谢谢
code=C#]string str1 = "<Data schema=\"PUBTRANSPACTREC\">"
+ " <PUBTRANSINREC> <ID>102</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+ " <PUBTRANSINREC> <ID>103</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+ " </Data> ";
if (str != "")
{
string[] strArray = str.Split(new string[] { "<PUBTRANSPACTREC>" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 1; i < strArray.Length; i++)
{
if (i != strArray.Length - 1)
{
string strXml = "<PUBTRANSPACTREC>" + strArray[i];
addTransPactXmlData(strXml);
}
else
{
string[] strArray1 = strArray[i].Split(new string[] { "</Data>" }, StringSplitOptions.RemoveEmptyEntries);
string strXml = "<PUBTRANSPACTREC>" + strArray1[0];
addTransPactXmlData(strXml);
}
}
}

public void addTransPactXmlData(string str)
{
PUBTRANSPACTREC transIn = new PUBTRANSPACTREC();
MemoryStream ms = new MemoryStream();
StreamWriter sr = new StreamWriter(ms, System.Text.Encoding.UTF8);
sr.Write(str);
sr.Flush();
ms.Seek(0, SeekOrigin.Begin);
XmlSerializer xmlSer = new XmlSerializer(typeof(PUBTRANSPACTREC));
transIn = (PUBTRANSPACTREC)xmlSer.Deserialize(ms);
//int num = transIn.addTransPactInfo();

}
[[/code]
恒之以念 2011-03-05
  • 打赏
  • 举报
回复
 string str = "<Data schema=\"PUBTRANSPACTREC\">"
+" <PUBTRANSINREC> <ID>102</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+" <PUBTRANSINREC> <ID>103</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+" </Data> ";

foreach (Match m in Regex.Matches(str, @"<PUBTRANSPACTREC>(.*?) </PUBTRANSPACTREC>"))
{
Response.Write( m.Value);
}



你试试行不,我想下载个东西,可惜没分用,谢谢
恒之以念 2011-03-05
  • 打赏
  • 举报
回复
Console.WriteLine(m.Groups[1].Value);
这句也有错误

m.Value 才对
恒之以念 2011-03-05
  • 打赏
  • 举报
回复
1楼的方法差不多吧,就是用正则表达式取出来,你写的那个正则有问题,
@"<PUBTRANSPACTREC>(.*?)</PUBTRANSPACTREC>",需要加中间的任何匹配字符,再试试,我这里测试不了,但思想应该是一楼说的那样
种草德鲁伊 2011-03-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kuku00700 的回复:]

使用Xml解析节点呗
[/Quote]

握爪。
kuku00700 2011-03-05
  • 打赏
  • 举报
回复
使用Xml解析节点呗
wanglf84 2011-03-05
  • 打赏
  • 举报
回复
 string str = "<Data schema=\"PUBTRANSPACTREC\">"
+" <PUBTRANSINREC> <ID>102</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+" <PUBTRANSINREC> <ID>103</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>"
+" </Data> ";

foreach (Match m in Regex.Matches(str, @"<PUBTRANSPACTREC> </PUBTRANSPACTREC>"))
{
Response.Write( m.Groups[1].Value);
}

// 得到str1,str2
string str1 = " <PUBTRANSINREC> <ID>102</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>";
string str2 = " <PUBTRANSINREC> <ID>103</ID> <SERCODE>201011000100474</SERCODE> </PUBTRANSINREC>";
wanglf84 2011-03-05
  • 打赏
  • 举报
回复
不行啊,没有结果啊
wuyq11 2011-03-05
  • 打赏
  • 举报
回复
string str =@"str=<Data schema=""PUBTRANSPACTREC"">
<PUBTRANSPACTREC>
<ID>1772038</ID>
<CODE>200908120009</CODE>
</PUBTRANSPACTREC>
<PUBTRANSPACTREC>
<ID>1772040</ID>
<CODE>200908120010</CODE>
</PUBTRANSPACTREC>
</Data>;";
foreach (Match m in Regex.Matches(str, @"(?is)<PUBTRANSPACTREC>(.*?)</PUBTRANSPACTREC>"))
{
Console.WriteLine(m.Groups[1].Value);
}

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧