c++ - 字符串切割直到第 k 个字符而不在中间切割一个单词
问题描述
给定一个字符串和一个数字 k,剪切字符串以使字符串长度 <= k 并且剪切不会拆分单词或使新字符串以空格结尾。
例如:k = 15 的“大家早上好”将返回“早上好”。
这是我的代码
int main() {
string str = "good morning everybody";
int k = 15,i;
for (i = k; i > 0; i--)
if(str[i] == ' ' && (str[i-1] >= 'a' && str[i-1] <= 'z'))
break;
for (int j = 0; j < i; j++)
cout << str[j];
return 0;
}
但我想知道是否有更好的方法来使用正则表达式或其他 C++ 技巧。(我来自 Python 世界)。
解决方案
使用正则表达式可以这样做:
"^.{14}[\s]*[^\s]+"
在 C++ 中,您可以使用std::format
等std::regex
推荐阅读
- ruby-on-rails - rails验证错误嵌套对象未定义方法...对于nil:NilClass
- mysql - 按星期几和一天中的时间过滤日期
- python - Python social-auth-app-django 'social' 不是已注册的命名空间
- javascript - 在Algolia中按属性获取单个对象
- angular - 路由器导航到子路由 - Angular 6
- python - 无法使用python获取xml文件的元素值
- sql - 带组的 SQL 透视数据
- mysql - Mysql用户在where子句中定义变量日期类型
- excel - 使用 Vlookup 查找重复值
- python - 在 Centos 7 上从 python 访问 Couchbase 的问题