我有包含句子的 C# 字符串。有时这些句子是可以的,有时它们只是用户生成的随机字符。我想做的是修剪这些句子中的单词。例如给定以下字符串:
var stringWithLongWords = "Here's a text with tooooooooooooo long words";
我想通过过滤器运行它:
var trimmed = TrimLongWords(stringWithLongWords, 6);
并获得每个单词最多只能包含 6 个字符的输出:
"Here's a text with tooooo long words"
有什么想法可以以良好的性能完成吗?.NET 中有什么可以自动处理的吗?
我目前正在使用以下代码:
private static string TrimLongWords(string original, int maxCount)
{
return string.Join(" ", original.Split(' ').Select(x => x.Substring(0, x.Length > maxCount ? maxCount : x.Length)));
}
这在理论上可行,但如果长单词以空格以外的分隔符结尾,则会提供错误的输出。例如:
这是sweeeeeeeeeeeeeeeeet!还有更多。
最终看起来像这样:
这是 sweeeeeeee 还有更多。
更新:
好的,评论太好了,我意识到这可能有太多的“假设”。如果忘记分隔符可能会更好。相反,如果一个词被修剪,它可以显示为三个点。以下是一些将单词修剪为最多 5 个字符的示例:
现代启示录!-> 启示录……现在!
天启!-> 启示录...
!例子!-> !考试...
这是sweeeeeeeeeeeeeeeeet!还有更多。- >这是甜蜜的......还有一些......更多。