首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • C#字符串截取问题,急用,谢谢!! [已结贴,结贴人:swalia2]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-30 20:02:33 楼主
    如如用一个数字来提取字号后面的字符到空格呢?如:
    HK5中的5
    怎么样得到
    1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD
    中的
    DDCF
    DDER
    DDCV
    DEDD
    用活动的TextBox1.Text到TextBox5.Text来显示
    格式不变数字是1-9之间变化
    帮帮忙谢谢!!!
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • robig
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:12:261楼 得分:0
    问题没看明白.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jinjazz
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 5

    发表于:2008-05-30 20:17:092楼 得分:0
    C# code
    string str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD "; string[] arrstr=str.Split('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); foreach (string s in arrstr) { Console.WriteLine(s.Trim('.')); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • S170393163
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:23:523楼 得分:0
    string str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD ";
    string[] a = str.spilt(" ");
    string b = a[0];  // b 的值为  1.DDCF
    string c = b.spilt(".")[1];

    这时c的值为DDCF

    粗略的讲一下,剩下的LZ很容易就可以解决了..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • S170393163
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:25:444楼 得分:0
    引用 2 楼 jinjazz 的回复:
    C# codestring str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD ";
                string[] arrstr=str.Split('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
                foreach (string s in arrstr)
                {
                    Console.WriteLine(s.Trim('.'));
                }


    没这样试过,似乎更简单,记下..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Haoze
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:29:115楼 得分:0
    C# code
    Regex regex = new Regex("([1-9]\\.([A-Z]{4})\\s{0,1})+?"); MatchCollection matchs = regex.Matches("1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD"); foreach (Match match in matchs) { Response.Write(match.Groups[2].Value);//<------ match.Groups[2].Value 就是你想要的值 Response.Write("<Br>"); }


    输出结果是:
    DDCF
    DDER
    DDCV
    DERD
    DEDD
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Haoze
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:31:526楼 得分:0
    字符串处理,请尽量使用正则表达式!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • virusplayer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 20:38:067楼 得分:0
    C# code
    string str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD"; string[] s = str.Split(new char[] { ' ', '.','1','2','3','4','5','6','7','8','9' }); foreach (string ss in s) { Console.WriteLine(ss); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:03:528楼 得分:0
    但是我用的是HK后面的数据才知道是几的啊..因为在要求那些下面还有序号是不要的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:05:119楼 得分:0
    能不能用FOR  来提取呢??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • only_endure
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:10:4010楼 得分:0
    引用 5 楼 Haoze 的回复:
    C# codeRegex regex = new Regex("([1-9]\\.([A-Z]{4})\\s{0,1})+?");
    MatchCollection matchs = regex.Matches("1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD");
    foreach (Match match in matchs)
    {
        Response.Write(match.Groups[2].Value);// <------ match.Groups[2].Value 就是你想要的值
        Response.Write(" <Br>");
    }


    输出结果是:
    DDCF
    DDER
    DDCV
    DERD
    DEDD

    为什么用match.Groups[2]呢?怎么分得组,能解释一下么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:38:2711楼 得分:0
    急..帮帮我啊..
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:40:1812楼 得分:0
    在里TEXE里输入输入的是
    HK5
    1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD
    6.DFKJNJBU
    7.DFPTNF  DFVBGG
    想得到
    DDCF
    DDER
    DDCV
    DEDD
    HK后面要是3就是得到1-3,后的数据至空格
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:42:0813楼 得分:0
    准确的是HK后要是5就是得到
    DDCF
    DDER
    DDCV
    DERD
    DEDD
    要是3的话
    DDCF
    DDER
    DDCV
    但是HK后的数是活动的.序号一般都在10以上要怎么样才能用HK后的来得到相对应的序号后的数啊.......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • DongloveRen
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 21:52:3114楼 得分:0
    我不知道我的想法对不对.
    在C#中不是有字符串数组,你可以用字符串数组来进行操作.这样你输入下标就可以对字符串进行操作.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lxcnn
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 22:03:0215楼 得分:5
    Substring和Parse等没有做合法性检查,细节楼主自己实现吧
    C# code
    string src = "HK5"; string dst = @"1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD 6.DFKJNJBU 7.DFPTNF DFVBGG"; int num = int.Parse(src.Substring(src.IndexOf("HK") + 2, 1)); string[] arr = dst.Split(' '); for (int i = 0; i < num; i++) { richTextBox2.Text += arr[i].Substring(2) + "\n"; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Haoze
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 22:08:2416楼 得分:0
    引用 10 楼 only_endure 的回复:
    引用 5 楼 Haoze 的回复:
    C# codeRegex regex = new Regex("([1-9]\\.([A-Z]{4})\\s{0,1})+?");
    MatchCollection matchs = regex.Matches("1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD");
    foreach (Match match in matchs)
    {
    Response.Write(match.Groups[2].Value);// <------ match.Groups[2].Value 就是你想要的值
    Response.Write(" <Br>");
    }


    输出结果是:
    DDCF
    DDER
    DDCV
    DERD
    DEDD

    为什么用match.Groups[2]呢?…


    这个正则有两个分组。
    所以最有Match.Groups集合数肯定是3.
    Groups[0]表示是匹配本身。
    从索引1开始时从外到内的分组匹配,所以第1个分组就是([1-9]\\.([A-Z]{4})\\s{0,1}),第二个分组就是([A-Z]{4})

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Haoze
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 22:09:3717楼 得分:0
    LZ不会用正则表达式么?
    C# code
    Regex regex = new Regex("([1-9]\\.([A-Z]+)\\s{0,1})+?"); MatchCollection matchs = regex.Matches("1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD"); foreach (Match match in matchs) { Response.Write(match.Groups[2].Value);// <------ match.Groups[2].Value 就是你想要的值 Response.Write(" <Br>"); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • whChina
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 22:43:1418楼 得分:5
    先把空格去掉,然后直接用数字分离就可以了。
    C# code
    string str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD "; str = str.Replace(" ",""); string[] arrstr=str.Split('1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); foreach (string s in arrstr) { Console.WriteLine(s.Trim('.')); }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • CNBT
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 22:55:4119楼 得分:0
    引用 6 楼 Haoze 的回复:
    字符串处理,请尽量使用正则表达式!


    赞同,来握个手!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yuxiaoguang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 23:03:1820楼 得分:0
    好像就是这样了。学习了,谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lxcnn
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 23:03:4921楼 得分:0
    引用 19 楼 CNBT 的回复:
    引用 6 楼 Haoze 的回复:
    字符串处理,请尽量使用正则表达式!


    赞同,来握个手!


    反对,OVER!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HimeTale
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 23:30:1422楼 得分:40
    C# code
    string sol = string.Empty; MatchCollection m = Regex.Matches(textBox2.Text, @"(?<=HK)\d+(?=\s)|(?<=\s*\d+\.)[^\s]+(?=\s)", RegexOptions.IgnoreCase); for (int i = 1; i <=Convert.ToInt32(m[0].Value); i++) { sol += m[i].Value + Environment.NewLine; } this.textBox1.Text = sol;


    说明书:
    1.把textBox2.Text替换成你的输入text
    2.m[0].Value里是HK后面的个数
    3.m[1].Value~m[n].Value分别对应第1到第n组字符串
    4.要是HK过大会异常,自己看情况处理吧


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HimeTale
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 23:36:4723楼 得分:0
    又看了一下需求,有个问题:

    "HK5
    1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD
    6.DFKJNJBU
    7.DFPTNF  DFVBGG "

    以上,统统输入到一个text里的吧?要是的话就用我的方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lylymb
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-30 23:57:3224楼 得分:0
    string str = "1.DDCF 2.DDER 3.DDCV 4.DERD 5.DEDD ";
                string[] arrstr=str.Split('1', '2', '3', '4', '5', '6', '7', '8', '9', '0','.');
                foreach (string s in arrstr)
                {
                    Console.WriteLine(s);
                }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-31 00:42:2725楼 得分:0
    引用 22 楼 HimeTale 的回复:
    C# code            string sol = string.Empty;
                MatchCollection m = Regex.Matches(textBox2.Text, @"(? <=HK)\d+(?=\s)|(? <=\s*\d+\.)[^\s]+(?=\s)", RegexOptions.IgnoreCase);

                for (int  i = 1; i <=Convert.ToInt32(m[0].Value); i++)
                {
                    sol +=  m[i].Value + Environment.NewLine;
                }
                this.textBox1.Text = sol;


    说明书:
    1.…

    为什么1.那项不见了.要从第二项开始??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • swalia2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-31 00:50:17