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 ...
随机推荐
- AutoFac与ASP.NET MVC结合使用
MVC下的配置 通过NuGet安装AutoFac插件:Install-Package Autofac.Mvc5 在Global中调用: var builder= new ContainerBuilde ...
- Android 对ScrollView滚动监听,实现美团、大众点评的购买悬浮效果
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming),请尊重他人的辛勤劳动成果,谢谢! 随着移动互联网的快速发展,它已经和我们的生活息息相关了,在 ...
- 编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
转载:http://blog.jobbole.com/30526/(前面内容)和http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf ...
- Android ImageView 替换图片
网上找了半天,找到的都是错的,都不是我想要的效果.我想要的是点击一个图片后,图片被替换. 通过一下方法可以实现:“v”是ImageView对象,“image_name”是替换后的图片资源 ((Imag ...
- POJ 3624 Charm Bracelet【01背包】
解题思路:直接套公式就能做的01背包, for(i=1;i<=n;i++) { for(v=w[i];v<=m;v++) f[i,v]=max(f[i,v],f[i-1,v-w[i]]+d ...
- day09-2 字典,集合的内置方法
目录 字典的内置方法 作用 定义方式 方法 优先掌握 需要掌握 存储一个值or多个值 有序or无序 可变or不可变 集合的内置方法 作用 定义方式 方法 存储一个值or多个值 有序or无序 可变or不 ...
- 在Windows环境下使用短信猫收发短信的简单配置:
Windows简单配置: 1.插入usb接口,打开电脑的设备管理器,装驱动后,查看端口下设备的com(串口)是多少,接下来就是配置短信猫的必须参数: 如果短信猫是COM(串口)口的,一般端口是COM1 ...
- fullcalendar日历插件
https://www.helloweba.net/javascript/231.html
- 在HTTP页面输入数据,Chrome 70将显示红色不安全警告
2018年10月17日,Chrome 70版本正式发布,该版本更新多项安全功能,再次升级对HTTP页面的不安全警告样式.当用户在HTTP页面输入数据时,Chrome 70将显示醒目的红色不安全警告,让 ...
- Python多环境扩展管理
Python发展至今,版本众多,在使用过程中经常遇到第三方库依赖的Python版本和系统Python版本不一致的情况.同时又因系统底层需调用当前版本Python,所以不能随意变更当前系统Python版 ...