首页 > 解决方案 > 字符串切割直到第 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 世界)。

标签: c++string

解决方案


使用正则表达式可以这样做:

"^.{14}[\s]*[^\s]+"

在 C++ 中,您可以使用std::formatstd::regex


推荐阅读