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 ...
随机推荐
- 【转】SQL语句删除和添加外键、主键
--删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter ...
- 洛谷P4014 分配问题(费用流)
题目描述 有 nn 件工作要分配给 nn 个人做.第 ii 个人做第 jj 件工作产生的效益为 c_{ij}cij .试设计一个将 nn 件工作分配给 nn 个人做的分配方案,使产生的总效益最大. ...
- SpringMVC(六)POJO类作为 @RequestMapping方法的参数
Command or form objects to bind request parameters to bean properties (via setters) or directly to f ...
- Python IDE和编辑器
1.什么是IDE? IDE也就是集成开发环境,较常用的有PyCharm 2.编辑器 (1)Sublime Text Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,Pytho ...
- 51nod 1576 Tree and permutation(树的重心+dfn序)
乍一看我不会. 先不考虑加点. 先考虑没有那个除\(2\). 考虑每一条边的贡献,假设某一条边把这棵树分成大小为x,y的两个部分. 那么这条边最多可以被使用\(min(x,y)*2\)次(因为有进有出 ...
- Vue系列(一):简介、起步、常用指令、事件和属性、模板、过滤器
一. Vue.js简介 1. Vue.js是什么 Vue.js也称为Vue,读音/vju:/,类似view,错误读音v-u-e 是一个轻量级MVVM(Model-View-ViewModel)框架,和 ...
- python--(常用模块-1)
python--(常用模块-1) 一.模块的简单认识: 什么是模块,模块就是我们把装有特有功能的代码进行归类的结果,从代码编写的单位来看我们的程序,从小到大的顺序:一条代码<语句块<代码块 ...
- 紫书 例题8-2 UVa 11605(构造法)
这道题方法非常的巧妙, 两层的n*n, 第一层第I行全是第I个国家, 第二层的第j列全是第j个国家.这样能符合题目的条件.比如说第1个国家, 在第一层的第一行全是A, 然后在第二层的第一行就有ABCD ...
- Git:与GitHub搭配及SSH登录
远程库(GitHub)上的地址 搭建本地库 准备一个文件 将地址用别名存在git上 推送到远程库 克隆 克隆的效果 1)完整的把远程库下载到本地 2)别名也完整保留 3)同时也初始化了本地库 邀请团队 ...
- Java String.replaceAll()方法
声明 以下是java.lang.String.replaceAll()方法的声明 public String replaceAll(String regex, String replacement) ...