N个字符串插入分隔符
来源:互联网 发布:httppost发送json 编辑:程序博客网 时间:2024/05/16 15:37
写程序时,经常遇到n个字符串插入n-1个分隔符格式化的问题:
比如有一个list:
list=["1111","2222","3333"]
想要达到输出效果:
\"1111\",\"2222\",\"3333\"
使用代码:
string resultText;foreach(string text,list){ resultText+="\""; resultText+=text; resultText+="\""; resultText+=",";}
使用上边的代码就会格式化出这样的结果:
\"1111\",\"2222\",\"3333\",
结尾多了一个”,”,虽然也有办法解决:
1.格式化之后删除末尾的 “,”
2.改变循环条件为count-1,然后最后一个单独写代码。
3.判断是否是末尾一个,然后break
string resultText;i=0;foreach(string text,list){ resultText+="\""; resultText+=text; resultText+="\""; i++; if(i==count) { break; } resultText+=",";}
以上方法虽然也能解决,但是一直决得不够优雅,直到今天看了QStringList 的join的源码,才豁然开朗:
/*! \fn QString QStringList::join(QChar separator) const \since 5.0 \overload join()*/QString QtPrivate::QStringList_join(const QStringList *that, const QChar *sep, int seplen){ int totalLength = 0; const int size = that->size(); for (int i = 0; i < size; ++i) totalLength += that->at(i).size(); if(size > 0) totalLength += seplen * (size - 1); QString res; if (totalLength == 0) return res; res.reserve(totalLength); for (int i = 0; i < size; ++i) { if (i) res.append(sep, seplen); res += that->at(i); } return res;}
n个字符串插入n-1个分隔符:
string resultText;count=list.size();for(int i=0;i< count;i++){ //i==0 不触发,正好添加count-1个分隔符 // 比上边break的方案,应该会少一条 sub 汇编指令吧 if(i) { resultText+=","; } resultText+="\""; resultText+=list[i]; resultText+="\"";}
完美!
阅读全文
0 0
- N个字符串插入分隔符
- 向数据库插入使用分隔符分隔(任意分隔符)的字符串脚本
- 处理一个字符串多个分隔符
- 分解带有分隔符的字符串为多个字符串
- 分隔符分隔的字符串
- 字符串截取(倒数第二个分隔符开始)
- JAVA中实现多个分隔符拆分字符串
- awk分隔符设定为多个字符或字符串
- python split使用多个分隔符分割字符串
- Python中使用多个分隔符分隔字符串re.split
- 分隔符分解字符串
- 分隔符,解析字符串
- java分隔符字符串
- js利用分隔符分隔字符串
- Oracle 根据分隔符分隔字符串
- 根据某一分隔符分隔字符串
- java 从控制台读取N个数据,以空格为分隔符,按回车结束
- C++读取CSV文件,并将逗号分隔符文件分割成N个数组
- 单例模式
- 记录
- Oracle中一个汉字占用字节长度
- JavaScript变量、作用域
- Hibernate基础核心解析(1)
- N个字符串插入分隔符
- centos7 firewall 防火墙 命令
- 自删除/删除目录下所有文件
- shiro过滤器过滤属性含义
- jdbc
- [随笔]success是什么
- 防御性驾驶技术全集详细技巧-什么是防御性驾驶
- git入门(4)团队中git保管代码常用操作
- SQL基础