• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

解决就结帖! 往各位高手帮忙下! C#

xing_8888_good 2007-12-24 09:04:58
如果字符串是


姓名张三性别男年龄15姓名李四性别女年龄15

以上是字符串!


如何把字符串分解成

张三 男 15
李四 女 15

两个函数!

Main以及自定义一个函数!

由Main函数传递字符给自定义函数!

然后由自定义函数分析字符串,然后以数组形式传送给Main,然后通过在Main中foreach循环输出字符串!
...全文
162 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangkun9999 2007-12-24
qgmzhfj
你这样得有缺陷啊,一旦出现姓名年龄年龄,就有问题了

如果是这样子的话,格式就会乱,程序根本没办法区分谁是谁了?
回复
wangkun9999 2007-12-24
用正则就可以了, LZ可以结贴了:

using System.Text.RegularExpressions;


string str="姓名张三性别男年龄15姓名李四性别女年龄15";
string RegexString = @".*?姓名(?<Name>[^性别].*?)性别(?<Sex>[^年龄].*?)年龄(?<Age>[^姓名].*?).*?";
string[] Name = GetRegValue(str, RegexString, "Name", false);
string[] Sex = GetRegValue(str, RegexString, "Sex", false);
string[] Age = GetRegValue(str, RegexString, "Age", false);
Response.Write(Name[0].ToString());

/// <summary>
/// 正则表达式取值
/// </summary>
/// <param name="HtmlCode">源码</param>
/// <param name="RegexString">正则表达式</param>
/// <param name="GroupKey">正则表达式分组关键字</param>
/// <param name="RightToLeft">是否从右到左</param>
/// <returns></returns>
public string[] GetRegValue(string HtmlCode , string RegexString,string GroupKey,bool RightToLeft)
{
MatchCollection m;
Regex r;
if (RightToLeft == true)
{
r = new Regex(RegexString, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.RightToLeft);
}
else
{
r = new Regex(RegexString, RegexOptions.IgnoreCase | RegexOptions.Singleline);
}
m= r.Matches(HtmlCode);
string[] MatchValue = new string[m.Count];
for (int i = 0; i < m.Count; i++)
{
MatchValue[i] = m[i].Groups[GroupKey].Value;
}
return MatchValue;


}


回复
qgmzhfj 2007-12-24
你这样得有缺陷啊,一旦出现姓名年龄年龄,就有问题了
回复
xing_8888_good 2007-12-24
回复
khler 2007-12-24
看11楼

回复
xing_8888_good 2007-12-24
结果是:


如何把这些个结果组返回到数组中!
回复
xing_8888_good 2007-12-24
问题标题008(?<问题标题>[\s\S]*?)问题内容008(?<问题内容>[\s\S]*?)问题补充008(?<问题补充>[\s\S]*?)用户姓名008(?<问题姓名>[\s\S]*?)性别008(?<性别>[\s\S]*?)电子邮件008(?<问题电子邮件>[\s\S]*?)生日008(?<生日>[\s\S]*?)血型008(?<血型>[\s\S]*?)婚姻008(?<婚姻>[\s\S]*?)出生地008(?<出生地>[\s\S]*?)目前居住地008(?<目前居住地>[\s\S]*?)简介008(?<简介>[\s\S]*?)完毕008
回复
xing_8888_good 2007-12-24
"问题标题008简单的表单验证问题问题内容008我的表单验证不通过时是用Response.Write(\"<script>alert(''用户名不能为空'')</script>\");来提示用户的。可是当对话框弹出,点击“确定”后,输入的密码却被清空了。怎么能在点击确定后不清空密码?问题补充008密码输入框<asp:textbox id=\"secondpwd1\" runat=\"server\" TextMode=\"Password\"></asp:textbox> 我要的是点击确定后,密码不清空啊你告诉我怎么做啊?xing_8888_good用户姓名008stef55555性别008男电子邮件008fuiangswallow@eyou.com生日008未知血型008未知婚姻008单身出生地008未知-未知目前居住地008未知-未知简介008师太,你就依了老衲吧!完毕008"
回复
xing_8888_good 2007-12-24
我的意思是如何把正则表达式匹配的结果组返回到数组中,然后返回数组到Main函数中作循环输出!
回复
khler 2007-12-24
    class Program
{
static void Main(string[] args)
{
string[] aaa = xxxxx("姓名张三性别男年龄15姓名李四性别女年龄15");
foreach (string a in aaa)
{
Console.WriteLine("{0}", a);
}

Console.ReadLine();

}

static string[] xxxxx(string str)
{
string[] bbb = str.Split(new string[] { "姓名" }, StringSplitOptions.None);
for (int i = 0; i < bbb.Length; i++)
{
bbb[i] = bbb[i].Replace("年龄", " ").Replace("性别", " ");
}

return bbb;
}
}
回复
xing_8888_good 2007-12-24
写成这个样子了
都不知道怎么返回了!


public static ArrayList Transact(string GetString, int Status)
{
ArrayList arralist = new ArrayList();
if (Status == 0)
{
Regex re = new Regex(@"问题标题008(?<问题标题>[\s\S]*?)问题内容008(?<问题内容>[\s\S]*?)问题补充008(?<问题补充>[\s\S]*?)用户姓名008(?<问题姓名>[\s\S]*?)性别008(?<性别>[\s\S]*?)电子邮件008(?<问题电子邮件>[\s\S]*?)生日008(?<生日>[\s\S]*?)血型008(?<血型>[\s\S]*?)婚姻008(?<婚姻>[\s\S]*?)出生地008(?<出生地>[\s\S]*?)目前居住地008(?<目前居住地>[\s\S]*?)简介008(?<简介>[\s\S]*?)完毕008");
MatchCollection mc = re.Matches(GetString);

foreach (Match m in mc)
{

}
}
return arralist;

}

foreach里面该怎么写啊??
回复
xing_8888_good 2007-12-24
static ArrayList Test()
{
ArrayList arralist = new ArrayList();
string test = "姓名张三性别男年龄15姓名李四性别女年龄15";
string test2 = Regex.Replace(test, "姓名", ";");
test2 = Regex.Replace(test2, "性别|年龄", " ");
test2 = test2.Substring(1);
string[] test3 = test2.Split(';');
for (int i = 0; i < test3.Length; i++)
{
arralist.Add(test3[i]);
}
return arralist;
}
static void Main(string[] args)
{
ArrayList arralist = new ArrayList();
arralist = Test();
for (int i = 0; i < arralist.Count; i++)
{
Console.WriteLine(arralist[i]);
}

Console.ReadLine();
}
回复
lovehongyun 2007-12-24
return s.Replace("姓名","\n").Replace("年龄"," ").Replace("性别"," ");
回复
xing_8888_good 2007-12-24
{"姓名","性别","年龄"}
回复
thfthf2 2007-12-24
首先查找“姓名”字符串,得到第一个和第二个的Index,根据这两个Index得到一个子串,这是一个人的信息
然后依次第二个,第三个直到结束。
在拆分个人信息,就比较简单了,分别以姓名、性别、年龄为标志,拆成3个子串即可。
回复
踏雪听雨 2007-12-24
多次使用split分成多个数组
split("姓名")
split("性别")
split("年龄")
回复
jupiter911 2007-12-24

string mysplit(string s)
{
return s.Replace("姓名","\n").Replace("年龄"," ").Replace("性别"," ");
}
回复
root_ 2007-12-24
如何把字符串分解成

张三 男 15
李四 女 15

然后以数组形式传送给Main
------------------
分解结果是两个字符串还是六个字符串?返回类型是一维数组还是二维数组?

这么简单一个问题,还把步骤写得那么详细,是作业吧,如果是作业还是自己做的好
回复
xing_8888_good 2007-12-24
怎么没有??
回复
qgmzhfj 2007-12-24
没有标志啊??
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2007-12-24 09:04
社区公告

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