要求如下:

source string: mmmmmmynameismickeym

separator: m

result string []: {"m", "m", "m", "m", "m", "m", "yna", "m", "eis", "m", "ickey", "m"}

思路分析:

1 判断 source string 是否包含 separator

1.1 若不包含,则将其包装为 string 数组返回

1.2 若包含,则进行下列操作

2 将 source string 转换为 char 数组

3 对数组每个字符依次进行检测(循环)

3.1 若不为分隔符,则先将内容存入临时 string 变量 temp

3.2 若为分隔符,则检测 temp 是否为空

  • 若 temp 不为空,则先将 temp 变量的值写入 result 数组

  • 将分隔符写入 result 数组

4 循环体外,检查 temp 变量是否为 null

  • 若不为空,则将其写入 result 数组

  • 返回 string 数组 result

代码:

// 需要引入命名空间
// using System;
// using System.Linq; static string[] splitString(string source_str, char separator) { //1. 判断 source string 是否包含 separator //1.1 string 中不包括分隔符 if (source_str.IndexOf(separator) == -1) { //为了返回原字符串,将其包成一个只有一项的string数组返回 string[] source_str_pack = new string[1];//试一试string[source_str] source_str_pack[0] = source_str; return source_str_pack; } //1.2 string 中包括分隔符 else { //2. 将 source_str 转换为 char 数组 char[] source = source_str.ToCharArray(); string temp = null; int resultID = 0; string[] result = new string[source.Length];//这样的结果会有大量的 null 元素,后面在返回结果前,进行处理去除无用的 null 元素 //3. 对数组每个字符依次进行检测 for (int i = 0; i < source.Length; i++) { //3.1 若不为分隔符,则先将内容存入临时 string 变量 temp if (source[i].Equals(separator) == false) { if (temp == null) { temp = ""; } temp = temp.Insert(temp.Length, source[i].ToString()); } //3.2 若为分隔符,则检测 temp 是否为空 else { //temp不为空,先将 temp 变量的值写入 result 数组 if (temp != null) { result[resultID] = temp; resultID++; temp = null; } //将分隔符写入 result 数组 result[resultID] = source[i].ToString(); resultID++; } } //4. 检查 temp 变量是否为 null //若不为空,先将其写入 result 数组 if (temp != null) { result[resultID] = temp; resultID++; temp = null; } //返回 string 数组 result //后面在返回结果前,进行处理去除无用的 null 元素 result = result.Where(s => !String.IsNullOrEmpty(s)).ToArray(); return result; } }

C# 分隔字符串成为字符串数组的方法(保留分隔符)的更多相关文章

  1. 伪数组(arguments及字符串)转数组的方法 贼简单

    超简单的伪数组转数组的方法, 简单到令人发指! (这里伪数组使用arguments) 1.使用 Array.prototype.slice Array.prototype.slice.call(arg ...

  2. php实现根据字符串生成对应数组的方法

    先看看如下示例: <?php $config = array( 'project|page|index' => 'content', 'project|page|nav' => ar ...

  3. JS对象 指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

    指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回 ...

  4. JavaScript 数组、字符串、Map、Set 方法整理

    在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...

  5. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  6. php 依据字符串生成相应数组方法

    php 依据字符串生成相应数组方法 比如: <?php $config = array( 'project|page|index' => 'content', 'project|page| ...

  7. javascript---关于字符串和数组的方法

    在学习javascript过程中,遇到过很多关于数组和字符串的一些操作.之前也总结了不少方法,可是一遇到自己用的时候,就忘了.不是忘了方法叫什么名,就是忘了方法的参数有什么,返回的是什么? 现在就再次 ...

  8. 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式

    记录自己在工作中,时不时使用,每次都要去查一下的基础方法.以及ES6经常使用的方法 一.Array 1.concat 合并数组 2.shift 获取数组第一个元素 unshift 向数组首位添加一个元 ...

  9. 从零开始的全栈工程师——js篇2.13(字符串与数组的方法)

    基类Object的子类有 Function  Array  Number  Boolean  String  Date  Math  RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都 ...

  10. C++ Primer 5th 第3章 字符串、向量和数组

    *****代码在Debian g++ 5.40 / clang++ 3.8(C++11)下编写调试***** 本章主要是关于字符串.数组的内容,以及一些简单的容器知识. 1.using的声明 usin ...

随机推荐

  1. iOS开发 小知识点

    1/ iOS汉字百分号互相转换. //汉字 NSString * name = @"时间终于将我对你的爱消耗殆尽"; //汉字转为百分比 NSString * encodeStri ...

  2. 页面加载通过javascript来修改控件属性

    function changeFormElementStatus(tagNames) {            var tagNameArr = tagNames.split("," ...

  3. CADisplayLink & NSTimer

    屏幕刷新与UI更新不同步:屏幕刷新由硬件(+GPU)保证,UI更新由软件(CPU保证). 出现卡顿的原因是软件的计算速度跟不上硬件的刷新速度. 一 简介 1 所在框架 CADisplayLink和其它 ...

  4. 使用RestTemplate上传文件给远程接口

    MultiValueMap request = new LinkedMultiValueMap(1); ByteArrayResource is = new ByteArrayResource(mul ...

  5. 区间dp+四边形不等式优化

    区间dp+四边形优化 luogu:p2858 题意 给出一列数 \(v_i\),每天只能取两端的数,第 j 天取数价值为\(v_i \times j\),最大价值?? 转移方程 dp[i][j] :n ...

  6. virtualenv和virtualenvwrapper的安装与使用

    环境 Windows 10 python 3.6.7 virtualenv 安装 virtualenv用于创建虚拟环境,用于隔离不同的python版本的运行,是容器类软件.这里在Windows下通过p ...

  7. HDU 2669 Romantic( 拓欧水 )

    链接:传送门 题意:求解方程 X * a + Y * b = 1 的一组最小非负 X 的解,如果无解输出 "sorry" 思路:裸 exgcd /***************** ...

  8. PHP下的异步尝试二:初识协程

    PHP下的异步尝试系列 如果你还不太了解PHP下的生成器,你可以根据下面目录翻阅 PHP下的异步尝试一:初识生成器 PHP下的异步尝试二:初识协程 PHP下的异步尝试三:协程的PHP版thunkify ...

  9. Python字典嵌套

    import copy menu = { "计算机科学与技术":{ "程序编程":{ "传统语言":{ "C++":&q ...

  10. HTML5常见的面试题,基础知识点

                                                                                    HTML5常见的面试题 一.HTML 常 ...