我需要从较长的字符串中获取“teaser”字符串,获取前 N 个字符很容易,但我需要确保最后一个单词是完整的单词。如果该单词被截断,我不需要将其包含在子字符串中。
我可以使用以下方法获取前 N 个字符:
str.Substring(0, N);
但是我如何确保最后一个单词是“完整的单词”。分隔符是空格 ' '。
我会选择
ReadOnlySpan<char>
以避免中间字符串创建:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine($"'{Preview("The lazy fox jumped over .. nah you know the drill", 15)}'");
Console.WriteLine($"'{Preview("Thelazyfoxjumpedover..nahyouknowthedrill", 15)}'");
}
public static string Preview(ReadOnlySpan<char> input, int previewLength)
{
var trimmed = input[..previewLength]; // Cut off roughly
var ws = trimmed.LastIndexOf(' '); // Find the then last whitespace
if (ws > 0) trimmed = trimmed[..ws]; // Cut to the final result
return trimmed.ToString();
}
}
小提琴:https://dotnetfiddle.net/ApiUme
输出:
“懒狐狸” 'Thelazyfoxjumpe'
您说过,您没有输入不包含空格的用例。我仍然建议保持防守并考虑到这一点。