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();
}
}
总结:编程的关键不在于处理好常规情况,而是处理好特殊情况,然后将两种情况结合起来。
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 #include
[转] SQL SERVER拼接字符串(字符串中有变量)
本文转自:http://blog.youkuaiyun.com/sikaiyuan2008/article/details/7848926 SQL SERVER拼接字符串(字符串中有变量)对我来说是一个难点,总是 ...
Net基础篇_学习笔记_第十二天_面向对象继承(字符串_字符串的各种方法)
我们可以讲字符串看做是char类型的一个只读数组.ToCharArray();将字符串转换为char数组new string(char[] chs):能够将char数组转换为字符串 1).Length ...
随机推荐
[算法]——归并排序(Merge Sort)
归并排序(Merge Sort)与快速排序思想类似:将待排序数据分成两部分,继续将两个子部分进行递归的归并排序:然后将已经有序的两个子部分进行合并,最终完成排序.其时间复杂度与快速排序均为O(nlog ...
DPDK内存管理(1)
1 前言 DPDK将利用hugepage预留的物理内存统一的组织管理起来,然后以库的方式对外提供使用的接口.下图展示了DPDK中内存有关的模块的相互关系. rte_eal 是统一 ...
forEach遍历数组实例
forEach()取出数组中2的倍数和3的倍数的数 //for IE if(!Array.prototype.forEach){ Array.prototype.forEach = function( ...
POJ3087 Shuffle&#39;m Up 简单模拟
题意:就是给你两副扑克,然后一张盖一张洗牌,不断重复这个过程,看能不能达到目标的扑克顺序 分析:然后就模拟下,-1的情况就是有循环节 #include #include&l ...
centos 7 切换运行模式
如设置命令行级别方法: systemctl set-default multi-user.target 设置窗口级别方法: systemctl set-default graphical.target
2272: [Usaco2011 Feb]Cowlphabet 奶牛文字
2272: [Usaco2011 Feb]Cowlphabet 奶牛文字 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 138 Solved: 97 ...
MongoDB与Spring整合(支持事务)——SpringDataMongoDB
1.将MongoDB设置为复制集模式 a.修改 mongod.cfg 文件,添加replSetName复制集名称 #replication: replication: replSetName: &qu ...
phpmailer发送邮件
phpmailer发送邮件 PHP内置的mail函数使用起来不够方便,另外受其他语言的影响,博主更偏好面向对象的包管理模式,因此phpmailer成为了我用PHP发送邮件的首选,这里分享给大家. 库导 ...
Linux服务器安装Nginx
Nginx 安装 一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.首先 ...
java权限控制以及变量的初始化
知识是靠积累的,不断的温习会帮你让你遇到许多问题,解决完这些问题之后,会收获许多,233333333333333. 1.java访问控制符 2.java变量初始化问题 默认构造方法的名字与类名相同,它 ...