将字符串剪切为<= 80个字符并且必须保留字词而不剪切它们

And*_*rew 1 .net c# regex

我是C#的新手,但我要求将字符串剪切为<= 80个字符,并且必须保持单词的完整性(不切割它们)

Examples

Before:我有一个要求将字符串剪切为<= 80个字符并且必须保留字而不剪切它们(长度= 108)
After:我有一个要求将字符串剪切为<= 80个字符并且必须保持(长度= 77)

Before:要求将字符串剪切为<= 80个字符并且必须保留单词而不剪切它们(长度= 99)
After:要求将字符串剪切为<= 80个字符并且必须保留字符(长度= 78)

Before:我有一个要求字符串是<= 80个字符并且必须保留字而不切割它们(长度= 101)
After:我有一个要求字符串<= 80个字符并且必须保留字(长度= 80)

我想使用RegEx,但我对正则表达式一无所知.对于其他人来说,这将是一件麻烦事.如果你能指出我可以用来创建这个表达式的正确文章,我将不胜感激.

这是我想要切成一行的函数:

public String cutTitleto80(String s){
    String[] words = Regex.Split(s, "\\s+");
    String finalResult = "";
    foreach (String word in words)
    {
        String tmp = finalResult + " " + word;
        if (tmp.Length > 80)
        {
            return finalResult;
        }
        finalResult = tmp;
    }
    return finalResult;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 6

尝试

^(.{0,80})(?: |$)
Run Code Online (Sandbox Code Playgroud)

这是一个捕获贪婪的匹配,必须后跟一个空格或字符串的结尾.您也可以使用零宽度前瞻断言,如

^.{0,80}(?= |$)
Run Code Online (Sandbox Code Playgroud)

如果您使用像http://regexhero.net/tester/这样的实时测试工具,它非常酷,您实际上可以看到它在您输入超过80个字符时跳回到字边界.

如果没有找到单词边界(空格),这里只会截断第80个字符:

^(.{1,80}(?: |$)|.{80})
Run Code Online (Sandbox Code Playgroud)