首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

拆分数组有关问题

2012-01-11 
拆分数组问题stringmSiteNameTextSarcher.Text.Trim()MSXML2.XMLHTTPxmlhttpnewMSXML2.XMLHTTP()strin

拆分数组问题
string   mSiteName   =   TextSarcher.Text.Trim();
                MSXML2.XMLHTTP   xmlhttp   =   new   MSXML2.XMLHTTP();
                string   Url   =   "http://XXX.XX.X.XX/getservice.php?sitename= "   +   mSiteName   +   " ";

                xmlhttp.open( "GET ",   Url,   false,   null,   null);
                xmlhttp.send( " ");
                MSXML2.XMLDocument   dom   =   new   XMLDocument();
                Byte[]   b   =   (Byte[])xmlhttp.responseBody;
               
                //UTF8格式
                //string   Flag   =   System.Text.ASCIIEncoding.UTF8.GetString(b,   0,   b.Length);
               
                string   andy   =   System.Text.Encoding.GetEncoding( "GB2312 ").GetString(b).Trim();

                //Response.Write(Url);
                //Response.Write(Flag);
                Response.Write(andy);
                //Response.End();
                string[]   state   =   andy.Split(new   char[]   {   '| '   });
                string   andylu   =   state[0];
                string   andylu1   =   state[1];

                Response.Write(andylu);
                Response.Write(andylu1);


返回数组格式是:
1634||工商分局;1684||广东工商局;
现在问题是怎么样拆分,我用Split完成,但现在是 "|| "
有谁遇到这样的问题



[解决办法]
andy 是 "1634||工商分局;1684||广东工商局; ",还是 "1634||工商分局 "这样的

string andy = "1634||工商分局 ";
string[] state = Regex.Split(andy , @ "\|\| ");
string andylu = state[0];
string andylu1 = state[1];

[解决办法]
不用正则表达式那么麻烦,直接Split就可以了,如下代码所示(建议直接贴到Visual Studio里面运行了看):

using System;
using System.Collections.Generic;
using System.Text;

namespace Split
{
class Program
{
struct Andy
{
public int id;
public string name;
}

static void Main(string[] args)
{
string s = "3366||XX电信绿化西路营业厅;1836||XX电信分局;1835||XX电信; ";

// 第一次拆分“;”
string[] andyArray = s.Split(new char[] { '; ' }, StringSplitOptions.RemoveEmptyEntries);
Andy[] andies = new Andy[andyArray.Length];
for (int i = 0; i < andyArray.Length; ++i)
{
andies[i] = new Andy();
// 第二次拆分“||”


string[] andyFields = andyArray[i].Split(new string[] { "|| " }, StringSplitOptions.RemoveEmptyEntries);
andies[i].id = int.Parse(andyFields[0]);
andies[i].name = andyFields[1];
}

foreach (Andy andy in andies)
{
Console.WriteLine( "Andy: id={0}, name={1} ", andy.id, andy.name);
}
}
}
}

[解决办法]
如果一定想用正则表达式,如此比较简洁好用些,能够将id和name分清楚:

string andy = "3366||XX电信绿化西路营业厅;1836||XX电信分局;1835||XX电信; ";
MatchCollection mc = Regex.Matches(andy, @ "(? <id> \d+)\|\|(? <name> [^|;$]+); ");
foreach (Match m in mc)
{
Console.WriteLine( "Andy: id={0}, name={1} ", m.Groups[ "id "], m.Groups[ "name "]);
}

[解决办法]
mengyao(edongguan) :
您写的ASP.NET吧。我给的那段code无论是在WebApplication下还是WindowsApplication,都是可用的,因为用的都是.NET基本类库。

duanzhi1984(莫邪):
这段正则表达式意思是除了“|”、“;”之外其它字符的一个或多个,紧跟一个“|”或“;”或行结束符。关于正则表达式的具体解释请查阅MSDN Regular Expression章节。

热点排行