完美分割字符串,实现字符串的splict功能
class Str:Client_C
{
string val;
string[] str = new string[100];
public void StrT1()
{
//1.正常情况
//2.两个分隔符相邻
//3.以分隔符开始或者结束。
//如果只有一次,做个细小的改变,让他跟随又规律的其他
int nIdx = -1;
int xIdn = val.IndexOf(',', 0); //必须从0开始,而不是现在的nIdx=-1
int maxIdn = val.Length-1;
int i = 0;
while (xIdn <= maxIdn && xIdn!=-1)
{
nIdx++;//将到达正式字符串,从此开始截取。,,hh //1.以分隔符开始,或者相邻,处理特殊情况 if (nIdx == xIdn)
{
str[i++] = ""; //在小于最大索引的情况下递增,等于最大都不往下找了
if (xIdn < maxIdn)
{
//nIdx不变,寻找下一个Idx
xIdn = val.IndexOf(',', nIdx + 1);
continue;
}
else //如果nIdx == xIdn,那么nIdx不变,xIdx该成-1,代表结束
{
xIdn = -1;
break;
}
}
str[i++] = val.Substring(nIdx, xIdn - nIdx);
//想想为什么是xIdx-nIdx,想想什么是下标,现在的nIdx和xIdx各代表什么,在什么位置。
nIdx = xIdn; //从后一个分隔符的下一个标记开始查
xIdn = val.IndexOf(',', nIdx+1);
}
//最后一次的时候,xIdn失效-1,同时也处理了以分隔符结束的情况,截取0个字符串的时候,结果为空,恰好
//没经过while循环内的nIdx++,标记还停留在分隔符位置,所以要从nIdx+1开始
str[i] = val.Substring(nIdx+1, maxIdn - nIdx);//nIdx还未加1,计算长度的时候,直接相减恰好
Print();
}
public void Print()
{
StringBuilder sb = new StringBuilder();
foreach (string item in str)
{
sb.Append(item + " ");
}
Console.WriteLine(sb.ToString());
}
public void Client()
{
StrT1();
}
}
总结:编程的关键不在于处理好常规情况,而是处理好特殊情况,然后将两种情况结合起来。
完美分割字符串,实现字符串的splict功能的更多相关文章
- Android 用空格作为分割符切割字符串
项目中有需要用到空格作为分割符切割字符串,进而转为List. String wordStore = edWord.getText().toString(); String[] word = wordS ...
- Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中
Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- es6字符串扩展 -- 字符串长度补全功能 padStart(), padEnd()
ES2017 引入了字符串补全长度的功能.如果某个字符串不够指定长度,会在头部或尾部补全.padStart()用于头部补全,padEnd()用于尾部补全. 'x'.padStart(5, 'ab') ...
- java以逗号为分割符拼接字符串的技巧
java以逗号为分割符拼接字符串的技巧 答: 不用那么多if判断,让人思维混乱,直接到最后使用deleteCharAt方法去除最后一个逗号即可. 实现代码如下所示: StringBuffer sb ...
- python字符串、字符串处理函数及字符串相关操作
python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...
- python split()函数使用拆分字符串 将字符串转化为列表
函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list ...
- 实现C语言字符串操作的库函数 包括基本的字符串复制 字符串长度 字符串比较等多种函数(C代码)
头文件 "mystring.h" #ifndef _MYSTR_H #define _MYSTR_H #include <stdio.h> #include <s ...
- [转] SQL SERVER拼接字符串(字符串中有变量)
本文转自:http://blog.csdn.net/sikaiyuan2008/article/details/7848926 SQL SERVER拼接字符串(字符串中有变量)对我来说是一个难点,总是 ...
- Net基础篇_学习笔记_第十二天_面向对象继承(字符串_字符串的各种方法)
我们可以讲字符串看做是char类型的一个只读数组.ToCharArray();将字符串转换为char数组new string(char[] chs):能够将char数组转换为字符串 1).Length ...
随机推荐
- 正确使用#include和前置声明(forward declaration)
http://blog.csdn.net/SpriteLW/article/details/965702
- http协议--笔记
HTTP协议的缺点:1.通信使用明文(不加密),内容可能会被窃听2.不验证通信方的身份,因此有可能遭遇伪装3.无法证明报文的完整性,所以有可能已遭篡改 防止窃听保护信息的几种对策:加密技术通信的加密H ...
- java 数据流
Example10_11.java import java.io.*; public class Example10_11 { public static void main(String args[ ...
- Node.js学习 - File Operation
同步异步 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的方法函数最后一个参数为 ...
- 转:Selenium Grid+JAVA +Windows 配置(Selenium 2.0)
Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也就是说,你可以同时运行多个测试.本质上来说就是,Selenium-Grid 支持分布式的测试执行.它可以让你的测试在一个分布 ...
- 转:lr_eval_string函数的用法解析
在LR中,C的变量和LR的参数是不一样的. 任何C的变量都不能被LR的函数直接调用. 应该用lr_eval_string来取值. 比如{NewParam}(LR中参数化的变量)直接用这个引用是没有问题 ...
- vue数据源转json问题
开发过程中使用到了vue框架进行前端批量数据的处理,将批量数据转换为json格式进行ajax传参时需要注意将vue数据源得到的json结果进行如下处理,webservice接收json数据时无法有效的 ...
- Chapter 1 First Sight——22
The girls were opposites. The tall one was statuesque. 女生却相反,高的像雕像一般 She had a beautiful figure, the ...
- PHP资源类型
在PHP中,我们经常使用到资源类型变量.例如:mysql连接.文件句柄等. 这些变量无法使用标量来表示,那么在Zend内核中是如何将PHP中的资源变量与C语言中的资源衔接的呢? 一.资源变量在PHP中 ...
- SORT函数的使用方法(转载)
sort函数的用法(转载出处:http://blog.sina.com.cn/s/blog_6439f26f01012xw3.html) 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写 ...