要求如下:

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. JQuery学习系列篇(一)

    jQuery是一套Javascript脚本库:注意jQuery是脚本库, 而不是脚本框架. "库"不等于"框架", 比如"System程序集" ...

  2. MEF example code

    public interface IObjectResolver { } public class ObjectResolver:IObjectResolver { private Compositi ...

  3. SQL Server-简单查询语句,疑惑篇

      前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开 ...

  4. pip快速下载安装python 模块module

    g刚开始学习python时,每次想要安装某个module,都到处找module的安装包(exe.whl等) 装setuptools,然后在cmd里用easy_install装pip,然后用pip装你要 ...

  5. 如何打开DOS控制台及常见DOS命令作用

    如何打开DOS控制台? * A:xp下如何打开DOS控制台?     * a:开始--程序--附件--命令提示符     * b:开始--运行--cmd--回车     * c:win+r--cmd- ...

  6. 路飞学城Python-Day46

    16-如何正确的使用类选择器及总结 一般情况下尽量不要去使用id选择器,因为id选择器有很大的限制性,id一般都是JS配合使用的,类选择器都是和CSS配合使用的,特殊性情况可以用id选择器. 类的使用 ...

  7. 利用cookie判断文件下载完成

    在网页下载文件时,该文件又是通过后台代码生成的,比如报表之类的.当需要生成文件过大时会耗费很多时间,而文件生成好传到页面的时候也没有事件可以监听它,像微软官网,谷歌,百度等下载方式都是通过提示五秒过后 ...

  8. underscore的简单了解

    1.underscore:一个封装好的js工具库,它提供了一整套函数式编程的使用功能,但是没有扩展任何js内置对象.它解决了这个问题:如果我面对一个空白的HTML,并希望立即开始工作,我需要什么? 2 ...

  9. logstash配置如何理解?

    elasticsearch {   action => "index" #The operation on ES   hosts => "localhost: ...

  10. 用Arcade表达式添加标签

    Arcade表达式是轻量级的脚本语言,我们可以通过全局变量$feature获取要素属性.比如说,要为城市添加标签,利用CITY_NAME列,我们可以编写语句:$feature.CITY_NAME.Ar ...