在ASP.NET Core中显示有限的文本/单词

时间:2018-08-27 06:29:21

标签: c#

我想在引导卡组件中显示有限的单词,但是它不会在C#中使用Substring()在适当的位置修剪/截断单词。

这是我的代码:

LimitedWord = _postRepo.GetNumberOfWord(posts.Description, 200, "")

存储库中逻辑的实现

public string GetNumberOfWord(string description, int length, string delimiter)
{
    if (string.IsNullOrWhiteSpace(delimiter))
    {
        return description.Substring(0, length);
    }
    else
    {
        return description.Substring(0, description.LastIndexOf(delimiter));
    }
}

3 个答案:

答案 0 :(得分:3)

只需使用CSS

div {
  padding: 15px;
  clear: both;
  margin-bottom: 20px;
  width: 300px;
  line-height: 1.2em;
}

.post-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
<div class="post-title">
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>

答案 1 :(得分:0)

您可以使用以下类似方法来获取n的前description个单词:

string.Join(" ", description.Split().Take(n))

您期望description待多久?如果该字符串可能真的很长,那么可能会觉得有一个附加的数据库列,其中包含简短的说明。

答案 2 :(得分:0)

以上步骤均未解决问题,但是我改变了存储库中的逻辑,并且顺便说一句,这似乎完全符合我的要求,谢谢您的帮助:-

 public string GetNumberOfWord(string description, int length)
    {
        var biggestWord = 50;
        var elipse = "[...]";

        if (description == "undefined")
        {
            return description;
        }
        var truncatedText = description.Substring(0, length + biggestWord);
        while(truncatedText.Length > length - elipse.Length)
        {
            var lastSpace = truncatedText.LastIndexOf(" ");
            if(lastSpace == -1)
            {
                break;
            }
            truncatedText = truncatedText.Substring(0, lastSpace).Replace("/[!,.?]$/","");
        }
        return truncatedText + elipse;

    }