要求如下:

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. Ubuntu14.04下初步使用MongoDB

    不多说,直接上干货! Ubuntu14.04下Mongodb(在线安装方式|apt-get)安装部署步骤(图文详解)(博主推荐) shell命令模式 输入mongo进入shell命令模式,默认连接的数 ...

  2. HD-ACM算法专攻系列(17)——find your present (2)

    题目描述: 源码: #include"iostream" #include"string" using namespace std; bool IsFirstH ...

  3. php 生成不重复的随机字符串

    md5(uniqid(md5(microtime(true)),true))

  4. ajax返回值

    前端: <html> <head> <meta name="viewport" content="width=device-width&qu ...

  5. Unity 指定区域随机实例化预制体Prefab 代码

    using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public GameObject prefab; void ...

  6. Unity 获取坐标函数 坐标转换函数

    获取世界坐标:transform.position 获取本地坐标:transform.localPosition 获取鼠标坐标:Input.mousePosition 获取手指触摸区域坐标:Input ...

  7. set 集合————两个数组的交集

    class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int& ...

  8. NTP同步底层实现

    RFC http://www.ietf.org/rfc/rfc5905.txt https://www.eecis.udel.edu/~mills/ntp/html/select.html https ...

  9. Vue.mixin Vue.extend(Vue.component)的原理与区别

    1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...

  10. HDU 1002 A + B Problem II( 高精度加法水 )

    链接:传送门 题意:A + B 高精度,板子题 /************************************************************************* & ...