从字符串中获取前 N 个字符,但如果在 C# 中被截断则忽略最后一个单词

问题描述 投票:0回答:1

我需要从较长的字符串中获取“teaser”字符串,获取前 N 个字符很容易,但我需要确保最后一个单词是完整的单词。如果该单词被截断,我不需要将其包含在子字符串中。

我可以使用以下方法获取前 N 个字符:

str.Substring(0, N);

但是我如何确保最后一个单词是“完整的单词”。分隔符是空格 ' '。

c# substring
1个回答
1
投票

我会选择

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'

您说过,您没有输入不包含空格的用例。我仍然建议保持防守并考虑到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.