拆分数组问题
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章节。