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 ...
随机推荐
- ZBrush中Mrgb、Rgb和M的使用
ZBrush®软件工具架中所有的命令选项都是我们平时较为常用的,位于工具架的中间位置,有一个Mrgb.Rgb和M选项它们所表示的是材质及颜色,那么,在Zbrush中只要选择相应的选项,就可以同时绘制材 ...
- 在Windows环境下使用短信猫收发短信的简单配置:
Windows简单配置: 1.插入usb接口,打开电脑的设备管理器,装驱动后,查看端口下设备的com(串口)是多少,接下来就是配置短信猫的必须参数: 如果短信猫是COM(串口)口的,一般端口是COM1 ...
- node——文件夹创建
//创建文件夹 var fs=require('fs'); //1.异步 fs.mkdir("./第一个目录",function(err){ if (err) { return c ...
- 谈 instanceof 和 typeof 的实现原理
typeof: js 在底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息
- Vue-给对象新增属性(使用Vue.$set())
在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官方文档定义 ...
- layui select change
<select lay-filter="test"></select> layui.use([ 'form'], function() { var form ...
- 用pycharm运行django项目
[点击]run -> Edit Configrations 弹出如下页面 点击“+” 点击Django server 在弹出页面的host填0.0.0.0 点击这个“文件夹” 点击‘+’后填下面 ...
- Django REST Framework 数码宝贝 - 3步进化 - 混合类 -->
读了我这篇博客, 你会刷新对面对对象的认知, 之前的面对对象都是LJ~~~ 表结构 class Publisher(models.Model): name = models.CharField(max ...
- UNIX基础【UNIX入门经典】
最早在学校很流行.学生毕业以后就会为公司购买操作系统.导致UNIX流行 UNIX内核: Shell:sh csh ksh 其他组件:
- JDK+JDBC+MySQL实例及注意事项
by qx.zhong Hangzhou 29 Jun 2014 开发环境 OS: Win8.1 x64 JDK: 1.8 SE DB: MySQL 5.5 Lib: mysql-connec ...