c语言 字符串切片重组成完整,完美分割字符串,实现字符串的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();

}

}

总结:编程的关键不在于处理好常规情况,而是处理好特殊情况,然后将两种情况结合起来。

Android 用空格作为分割符切割字符串

项目中有需要用到空格作为分割符切割字符串,进而转为List. String wordStore = edWord.getText().toString(); String[] word = wordS ...

Sql Server 中将由逗号&OpenCurlyDoubleQuote;,”分割的一个字符串转换为一个表集,并应用到 in 条件中

Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...

js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)

js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...

es6字符串扩展 -- 字符串长度补全功能 padStart&lpar;&rpar;&comma; padEnd&lpar;&rpar;

ES2017 引入了字符串补全长度的功能.如果某个字符串不够指定长度,会在头部或尾部补全.padStart()用于头部补全,padEnd()用于尾部补全. 'x'.padStart(5, 'ab') ...

java以逗号为分割符拼接字符串的技巧

java以逗号为分割符拼接字符串的技巧   答: 不用那么多if判断,让人思维混乱,直接到最后使用deleteCharAt方法去除最后一个逗号即可. 实现代码如下所示: StringBuffer sb ...

python字符串、字符串处理函数及字符串相关操作

python字符串.字符串处理函数及字符串相关操作 字符串介绍 python字符串表示 Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹: >>> 'spam e ...

python split&lpar;&rpar;函数使用拆分字符串 将字符串转化为列表

函数:split()Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list ...

实现C语言字符串操作的库函数 包括基本的字符串复制 字符串长度 字符串比较等多种函数(C代码)

头文件 "mystring.h" #ifndef _MYSTR_H #define _MYSTR_H #include #include

&lbrack;转&rsqb; SQL SERVER拼接字符串(字符串中有变量)

本文转自:http://blog.csdn.net/sikaiyuan2008/article/details/7848926 SQL SERVER拼接字符串(字符串中有变量)对我来说是一个难点,总是 ...

Net基础篇&lowbar;学习笔记&lowbar;第十二天&lowbar;面向对象继承&lpar;字符串&lowbar;字符串的各种方法)

我们可以讲字符串看做是char类型的一个只读数组.ToCharArray();将字符串转换为char数组new string(char[] chs):能够将char数组转换为字符串 1).Length ...

随机推荐

&lbrack;算法&rsqb;——归并排序(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&&num;39&semi;m Up 简单模拟

题意:就是给你两副扑克,然后一张盖一张洗牌,不断重复这个过程,看能不能达到目标的扑克顺序 分析:然后就模拟下,-1的情况就是有循环节 #include #include&l ...

centos 7 切换运行模式

如设置命令行级别方法: systemctl set-default multi-user.target 设置窗口级别方法: systemctl set-default graphical.target

2272&colon; &lbrack;Usaco2011 Feb&rsqb;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变量初始化问题 默认构造方法的名字与类名相同,它 ...

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值