正则表达式分割指定长度的字符串

weiqian_bj 2013-08-12 05:28:11
现在有一字符串比如"IBM发布基于人脑特性设计的全新计算架构和编程语言";怎么通过正则表达式得到一组为5个字符长的字符串数组,实例结果为:
"IBM发布",
"基于人脑特",
"性设计的全",
"新计算架构",
"和编程语言"。
望解析...谢谢
...全文
575 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2013-08-13
  • 打赏
  • 举报
回复
update: 9L的在找 INDEX时会有BUG,这样才更准确:
	string str="IBM发布基于人脑特性设计的全新计算架构和编程语言";
    var result=str.ToCharArray().Select((x,i)=>new {x,i}).GroupBy(x=>x.i/5).Select(g=>new string(g.Select(s=>s.x).ToArray()));
灬浪子灬 2013-08-13
  • 打赏
  • 举报
回复
引用 2 楼 hwenycocodq520 的回复:

var value = Regex.Matches("IBM发布基于人脑特性设计的全新计算架构和编程语言", @"\w{5}");
+1
引用 8 楼 wuyazhe 的回复:
Tim,来个纯Linq的。
这个貌似有问题 可以自己输出看看
q107770540 2013-08-13
  • 打赏
  • 举报
回复
引用 8 楼 wuyazhe 的回复:
Tim,来个纯Linq的。
纯LINQ的来了:
	string str="IBM发布基于人脑特性设计的全新计算架构和编程语言";
	var result=str.ToCharArray().GroupBy(x=>str.IndexOf(x)/5).Select(x=>new string(x.ToArray()));
兔子-顾问 2013-08-12
  • 打赏
  • 举报
回复
Tim,来个纯Linq的。
q107770540 2013-08-12
  • 打赏
  • 举报
回复
引用 4 楼 Yao__Shun__Yu 的回复:
[quote=引用 2 楼 hwenycocodq520 的回复:]

var value = Regex.Matches("IBM发布基于人脑特性设计的全新计算架构和编程语言", @"\w{5}");
言简意赅,好帅气,喜欢! [/quote] 所谓条条大路通罗马,二楼的也是可以的,只是需要处理一下: string[] = Regex.Matches("IBM发布基于人脑特性设计的全新计算架构和编程语言", @"\w{5}").Cast<Match>().Select(m=>m.Value).ToArray(); 有时间可以研究一下正则,才会发现正则的真正魅力.
小傅哥 2013-08-12
  • 打赏
  • 举报
回复
在帮你加个便利,让你看着容易
q107770540 2013-08-12
  • 打赏
  • 举报
回复
一句话搞定:
string[] result=Regex.Split(yourstr,"(?<=\\G.{5})");
具体可参考我的blog: http://blog.csdn.net/q107770540/article/details/6436973
小傅哥 2013-08-12
  • 打赏
  • 举报
回复
引用 2 楼 hwenycocodq520 的回复:

var value = Regex.Matches("IBM发布基于人脑特性设计的全新计算架构和编程语言", @"\w{5}");
言简意赅,好帅气,喜欢!
小傅哥 2013-08-12
  • 打赏
  • 举报
回复
话说你这五个一截取也用不到正则呀,Substring足以了

using System;
public class SubStringTest
{
    public static void Main()
    {
        string[] info = { "Name: Felica Walker", "Title: Mz.", "Age: 47", "Location: Paris", "Gender: F" };
        int found = 0;
        Console.WriteLine("The initial values in the array are:");
        foreach (string s in info)
            Console.WriteLine(s);
        Console.WriteLine("{0}We want to retrieve only the key information. That is:", Environment.NewLine);
        foreach (string s in info)
        {
            found = s.IndexOf(":");
            Console.WriteLine(s.Substring(found + 1).Trim());
        }
    }
}
另外我把正则的例子也给你个

using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections;
using System.Text.RegularExpressions;

namespace cop
{
    class HelloWorld 
    {
        public static void Main(String[] args)
        {

            string test = "123abc";

            Regex reg = new Regex(@"[a-z]", RegexOptions.IgnoreCase);

            string str = "";

            MatchCollection mc = reg.Matches(test);

            foreach (Match m in mc)
            {

                str += m.Value + "\n";

            }

            Console.WriteLine(str);

            /*
             *输出结果 a b c
             */

            Console.ReadKey();

        }
    }

    
}
智商余额不足 2013-08-12
  • 打赏
  • 举报
回复

var value = Regex.Matches("IBM发布基于人脑特性设计的全新计算架构和编程语言", @"\w{5}");
拥抱开源 2013-08-12
  • 打赏
  • 举报
回复
正则我也不会 帮你顶一下吧

110,534

社区成员

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

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

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