GetSubString获取取指定子串和拆分字符串的函数GetSubStr
2009-10-10 21:11
471 查看
#include<string>
using namespace std;
// 获取以ch间隔的第n个子字符串:标准版(取子串)
// 参数为:原始串,分隔符,位置(zero base)
string GetSubStr(const string &strData, char ch, int nLocation)
{
//如果nLocation小于零,则返回空字符串
if(nLocation<0){
return string();
}
//开始处理
const string strDataProcess = strData+ch;
int nLenght(0);
//对于获得第一个位置(nLocation==0)的情况
if(nLocation==0){//获取第一个
nLenght = (int)strDataProcess.find(ch,-1+1);
string strProcess;
if(nLenght >0){
strProcess=strDataProcess.substr(-1+1,nLenght);
}
return strProcess;
}
//其它情况:定位
int nIndex(0),bStartPos(-1),nEndPos(0);
while(nIndex < nLocation){
nIndex ++;
bStartPos = (int)strDataProcess.find(ch,bStartPos + 1);
//提供的位置参数(nLocation)超出了字符串范围
if(bStartPos == string::npos)
return string();
};
//获得子字符串的结尾位置
nEndPos = (int)strDataProcess.find(ch,bStartPos + 1);
//提供的位置参数(nLocation)超出了字符串范围
if(nEndPos == string::npos)
return string();
//取得子串
nLenght = nEndPos - bStartPos -1;
string strProcess;
if (nLenght > 0 ){
strProcess = strDataProcess.substr(bStartPos+1,nLenght);
}
return strProcess;
}
// 以指定的字符拆分字符串:vector容器版本,由于接口一致,将容器替换为list同样可以
int GetSubStr(const string &strData, char ch, vector<string> &v)
{
v.clear();
if(strData.empty())
return 0;
if(strData.find(ch)==string::npos){
v.push_back(strData);
return 1;
}
//开始处理
size_t nStartPos(0),nEndPos(0);
while(nEndPos!=string::npos){
nEndPos = (int)strData.find(ch,nStartPos);
//提供的位置参数(nLocation)超出了字符串范围
if(nEndPos == string::npos){
v.push_back(strData.substr(nStartPos));
break;
}
v.push_back(strData.substr(nStartPos,nEndPos - nStartPos));
nStartPos = nEndPos+1;
};
return (int)v.size();
}
using namespace std;
// 获取以ch间隔的第n个子字符串:标准版(取子串)
// 参数为:原始串,分隔符,位置(zero base)
string GetSubStr(const string &strData, char ch, int nLocation)
{
//如果nLocation小于零,则返回空字符串
if(nLocation<0){
return string();
}
//开始处理
const string strDataProcess = strData+ch;
int nLenght(0);
//对于获得第一个位置(nLocation==0)的情况
if(nLocation==0){//获取第一个
nLenght = (int)strDataProcess.find(ch,-1+1);
string strProcess;
if(nLenght >0){
strProcess=strDataProcess.substr(-1+1,nLenght);
}
return strProcess;
}
//其它情况:定位
int nIndex(0),bStartPos(-1),nEndPos(0);
while(nIndex < nLocation){
nIndex ++;
bStartPos = (int)strDataProcess.find(ch,bStartPos + 1);
//提供的位置参数(nLocation)超出了字符串范围
if(bStartPos == string::npos)
return string();
};
//获得子字符串的结尾位置
nEndPos = (int)strDataProcess.find(ch,bStartPos + 1);
//提供的位置参数(nLocation)超出了字符串范围
if(nEndPos == string::npos)
return string();
//取得子串
nLenght = nEndPos - bStartPos -1;
string strProcess;
if (nLenght > 0 ){
strProcess = strDataProcess.substr(bStartPos+1,nLenght);
}
return strProcess;
}
// 以指定的字符拆分字符串:vector容器版本,由于接口一致,将容器替换为list同样可以
int GetSubStr(const string &strData, char ch, vector<string> &v)
{
v.clear();
if(strData.empty())
return 0;
if(strData.find(ch)==string::npos){
v.push_back(strData);
return 1;
}
//开始处理
size_t nStartPos(0),nEndPos(0);
while(nEndPos!=string::npos){
nEndPos = (int)strData.find(ch,nStartPos);
//提供的位置参数(nLocation)超出了字符串范围
if(nEndPos == string::npos){
v.push_back(strData.substr(nStartPos));
break;
}
v.push_back(strData.substr(nStartPos,nEndPos - nStartPos));
nStartPos = nEndPos+1;
};
return (int)v.size();
}
相关文章推荐
- C语言版字符串中获得子串的函数,获取字符串中指定位置的子串
- PHP 字符串获取 substr 与 strstr 函数-来自PHP教程
- 路径参数函数:路径的获取(GetModuleFileName)和拆分(_splitpath)
- Oracle解析json字符串 获取指定值自定义函数代码
- getElementsByClassName函数实现获取指定类名的子元素列表
- 以HttpGet方法获取URL数据并转换成指定编码格式的字符串
- 用来获取子串的两个函数substr和substring用法比较
- php 字符串操作函数substr()截取中文子串乱码问题
- 以HttpGet方法获取URL数据并转换成指定编码格式的字符串
- PHP使用strstr()函数获取指定字符串后所有字符的方法
- PHP字符串拆分函数之mb_substr
- strlen、ord、substr函数——获取长度、ASCII码及部分字符串
- 一个案例讲解获取字符串长度的函数mb_strlen()和字符串截取函数mb_substr()
- Java精确截取字符串/获取字符串前指定长度字符函数
- substr 和 find函数实现自己的字符串分割函数(以指定分隔符分割字符串,分隔符可为字符串)
- 妙用 T-SQL: PARSENAME 函数 (也可不使用该函数,鸣谢"小杰") 实现按指定分隔符拆分字符串 SplitString
- 获取字符串中某个指定的子串出现的开始位置(CHARINDEX用法)
- 黑马程序员—基础—设计一个方法,用于获取一个字符串中指定子串出现的次数,
- c split 函数 分割字符串 获取指定index的子字符串
- PHP中substr_count()函数获取子字符串出现次数的方法