今天群里人突然发问形如var s = "abcdefghijklmn"; 有什么简单的办法分组字符串?

第一想到的肯定是字符串分割split,但是这个貌似和我们平常用的区别很大呀,没有单字符做截取依据嘛。去查找发现有个Regex.Split方法,噢~貌似这个可以做到哦。

Ok,我们查看下Regex.Split提供了2个重载方法,这个我们用三个参数的重载方法,其实主要的就是这里的正则写法直接给出不多做解释了(?<=\G.{3})

List<string> str2 = new List<string>(Regex.Split(str, @"(?<=\G.{3})", RegexOptions.Singleline));

(3是指 33分组,下面的都是一样的)

同样的逻辑我们可以想到通过正则可以匹配所有的字符串出来,Regex.Matches(input,pattern) ,但是这个返回的是MatchCollection 集合,ok 一样的利用linq我们来取出数据

var str2=(from Match m in Regex.Matches(str, @"\w{1,3}")select m.Value).ToList()

既然linq 我们都用的这么多了,那linq里的Enumerable 应该或多或少接触了那么一些,像Repeat、Reverse等等这些确实提供了我们诸多的方便,刚开始立马想到了累加器的使用Aggregate((m,n)=>{//do something}),像在每个组的字符串后面增加一个

‘,’分隔符然后split一下的,后来也就放弃了,看到老外有个用skip来截取然后转化成数组的也挺好,遂稍微改了一下直接贴上来供大家参考

double chunkSize = 3;
var str2 = Enumerable.Range(0, (int)Math.Ceiling(str.Length / chunkSize)).Select(i => new string(str.Skip(i * (int)chunkSize).Take((int)chunkSize).ToArray()));

说实话本人不建议这种写法,代码太多,里面又掺杂类型转换。

最后一种说实话 我都没接触过,这个也是看老外写的,用了第三方的类库Morelinq,morelinq里面提供了一个batch方法可以很容易的做到这些

var str2=str.Batch(3, chars => new String(chars.ToArray()));

这个实在是太简洁了,唯一的缺憾就是引入了第三方的类库,也不推荐。

以上共4种方法,从个人角度来看,推荐大家使用正则,及上图中的第三种,其他三种方法不是引入了第三方类库,就是代码方法太生僻,希望能给大家带来些许的灵感,欢迎拍砖。

转载于:https://www.cnblogs.com/luohongwei/p/5726378.html

字符串按长度转换成数组相关推荐

  1. 编写程序,测试字符串“你好,欢迎来到Java世界”的长度,将字符串的长度转换成字符串进行输出,并对其中的“Java”四个字母进行截取,输出截取字母以及它在字符串中的位置。

    编写程序,测试字符串"你好,欢迎来到Java世界"的长度,将字符串的长度转换成字符串进行输出,并对其中的"Java"四个字母进行截取,输出截取字母以及它在字符串 ...

  2. 将字符串按长度截取成数组

    /*** @param string text 为传入的文本* @param int num 为单行显示的字节长度* @return array */function textByteLength(t ...

  3. php json数组大小,php json转换成数组形式

    写的j的候通现端数是制这.效合应近环大过这业据son转换成数组的一个类和方法,实际上写的方法可以把大部分包含json字符串的数据结构转换成数组,在重说道.础过学开概码数项遍间里哦行览屏屏定处..容标中 ...

  4. php 将一个字符串转换成数组,PHP将一个字符串转换成数组

    PHP将一个字符串转换成数组,支持中文/** * 将一个字符串转换成数组,支持中文 * @param string $string 待转换成数组的字符串 * @return string 转换后的数组 ...

  5. php函数用竖线隔开,用指定的分隔符号把字符串转换成数组《 PHP 基础 》

    现在我这里有一个字符串 ... 就是这个 $tracks ... 它的值是用竖线分隔开的一些文字 ... 使用 explode 函数 ... 我们可以使用竖线作为分隔符,把这个字符串转换成一个数组. ...

  6. asp.net(c#)如何把字符串转换成数组

    数据库中记录保存格式是"a,b,c,d",现准备分别取出各值,如果直接取出做数组是不行的,必须进行转换,本文分2种情况,一种是该字符串转换成字符string[]类数组,一种是字符串 ...

  7. 如何将数据库中text字段中返回的数据转换成数组的形式,并且将字符串的数字转换成数字的形式显示

    如何将数据库中text字段中返回的数据转换成数组的形式,并且将字符串的数字转换成数字的形式显示 数据库text字段 数据库中的text字段在前端 界面返回的时候是成字符串的形式的,类似于下图 那么,在 ...

  8. php把字符串变为数组_php怎么把字符串转换成数组?

    php怎么把字符串转换成数组?下面本篇文章给大家介绍一下PHP把字符串转换成数组的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. PHP中,将一个字符串转成数组,是使用非常频繁 ...

  9. 字符串转换成数组的几种情况

    1.字符串转换成数组 (1)split()方法,方法内什么参数都不传时,该字符串整体为一个数组 例如: var a='abdcjw' console.log(a.split()) //结果为: [&q ...

最新文章

  1. 智能手机背面玻璃的缺陷检测,分割网络的应用
  2. Homework_4 四则运算 - C#版
  3. 详解Linux 五种IO模型
  4. 子项目依赖和父项目冲突_实战 | maven 轻松重构项目
  5. mac环境下node.js和phonegap/cordova创建ios和android应用
  6. 用sum函数求三个数和C语言,C语言用函数写两数之和.doc
  7. 中绘制折线_统计图之折线图的结构和制作过程
  8. 《趣学JavaScript——教孩子学编程》——2.4 Boolean
  9. pythonUI---ttk.Treeview使用心得(内含表格形式加垂直水平滚轮方法)
  10. bzoj 1047 理想的正方形
  11. 本博文记录需要解决的问题
  12. Call for Speaker!Flink Forward 全球在线会议议题征集 ing
  13. 数据库习题(填空题五)
  14. Linux下安装zabbix-agent详解
  15. AWS、Azure等国外云计算如何迁移到国内阿里云上?
  16. c语言课程设计作业心得体会,c语言课程设计总结心得
  17. 抓取沪A股票资金流向数据
  18. 乌云曝光铁道部12306网站出现SQL漏洞
  19. 【C++错误处理】no matching function for call to transform
  20. 计算机网络安全与维护论文致谢,计算机论文致谢词

热门文章

  1. 用matlab分析时间响应教程,基于Matlab的多自由度耦合滑移模型的动力响应可靠度分析...
  2. 安装虚拟机Ubuntu,搭建lnmp环境碰到的坑(一)
  3. 【Linux入门到精通系列讲解】shell脚本语法入门教程(看一篇就够了)
  4. 【机器学习入门到精通系列】粒子群优化算法
  5. python【蓝桥杯vip练习题库】ADV-234字符串跳步
  6. 数据拟合matlab算法
  7. php如何编写应用程序,编写安全 PHP 应用程序的七个习惯
  8. 怎么预约鸿蒙系统,华为鸿蒙2.0系统-鸿蒙2.0系统预约-艾艾软件园
  9. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  10. sql优化ppt_Spark优化 | Spark 3.0 中七个必须知道的 SQL 性能优化