C# 分隔字符串成为字符串数组的方法(保留分隔符)
要求如下:
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# 分隔字符串成为字符串数组的方法(保留分隔符)的更多相关文章
- 伪数组(arguments及字符串)转数组的方法 贼简单
超简单的伪数组转数组的方法, 简单到令人发指! (这里伪数组使用arguments) 1.使用 Array.prototype.slice Array.prototype.slice.call(arg ...
- php实现根据字符串生成对应数组的方法
先看看如下示例: <?php $config = array( 'project|page|index' => 'content', 'project|page|nav' => ar ...
- JS对象 指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
指定分隔符连接数组元素join() join()方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. 语法: arrayObject.join(分隔符) 参数说明: 注意:返回 ...
- JavaScript 数组、字符串、Map、Set 方法整理
在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...
- JS解析json数据并将json字符串转化为数组的实现方法
json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...
- php 依据字符串生成相应数组方法
php 依据字符串生成相应数组方法 比如: <?php $config = array( 'project|page|index' => 'content', 'project|page| ...
- javascript---关于字符串和数组的方法
在学习javascript过程中,遇到过很多关于数组和字符串的一些操作.之前也总结了不少方法,可是一遇到自己用的时候,就忘了.不是忘了方法叫什么名,就是忘了方法的参数有什么,返回的是什么? 现在就再次 ...
- 记录个人数组、字符串自己常忘记的方法,以及ES常用处理方式
记录自己在工作中,时不时使用,每次都要去查一下的基础方法.以及ES6经常使用的方法 一.Array 1.concat 合并数组 2.shift 获取数组第一个元素 unshift 向数组首位添加一个元 ...
- 从零开始的全栈工程师——js篇2.13(字符串与数组的方法)
基类Object的子类有 Function Array Number Boolean String Date Math RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都 ...
- C++ Primer 5th 第3章 字符串、向量和数组
*****代码在Debian g++ 5.40 / clang++ 3.8(C++11)下编写调试***** 本章主要是关于字符串.数组的内容,以及一些简单的容器知识. 1.using的声明 usin ...
随机推荐
- JQuery学习系列篇(一)
jQuery是一套Javascript脚本库:注意jQuery是脚本库, 而不是脚本框架. "库"不等于"框架", 比如"System程序集" ...
- MEF example code
public interface IObjectResolver { } public class ObjectResolver:IObjectResolver { private Compositi ...
- SQL Server-简单查询语句,疑惑篇
前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开 ...
- pip快速下载安装python 模块module
g刚开始学习python时,每次想要安装某个module,都到处找module的安装包(exe.whl等) 装setuptools,然后在cmd里用easy_install装pip,然后用pip装你要 ...
- 如何打开DOS控制台及常见DOS命令作用
如何打开DOS控制台? * A:xp下如何打开DOS控制台? * a:开始--程序--附件--命令提示符 * b:开始--运行--cmd--回车 * c:win+r--cmd- ...
- 路飞学城Python-Day46
16-如何正确的使用类选择器及总结 一般情况下尽量不要去使用id选择器,因为id选择器有很大的限制性,id一般都是JS配合使用的,类选择器都是和CSS配合使用的,特殊性情况可以用id选择器. 类的使用 ...
- 利用cookie判断文件下载完成
在网页下载文件时,该文件又是通过后台代码生成的,比如报表之类的.当需要生成文件过大时会耗费很多时间,而文件生成好传到页面的时候也没有事件可以监听它,像微软官网,谷歌,百度等下载方式都是通过提示五秒过后 ...
- underscore的简单了解
1.underscore:一个封装好的js工具库,它提供了一整套函数式编程的使用功能,但是没有扩展任何js内置对象.它解决了这个问题:如果我面对一个空白的HTML,并希望立即开始工作,我需要什么? 2 ...
- logstash配置如何理解?
elasticsearch { action => "index" #The operation on ES hosts => "localhost: ...
- 用Arcade表达式添加标签
Arcade表达式是轻量级的脚本语言,我们可以通过全局变量$feature获取要素属性.比如说,要为城市添加标签,利用CITY_NAME列,我们可以编写语句:$feature.CITY_NAME.Ar ...