以字结尾的字符串的180个第一个字符

时间:2009-08-05 08:50:09

标签: c# asp.net

我需要缩短字符串..

假设我们有一个长度为500的字符串。

我只想要它的第一部分 - 最多180个字符,以最后一个字结尾,然后才达到180.我不想剪短字符串在一个单词的中间。

这是如何实现的?它没有那么好的表现......它是一天发生几次,而不是更多。

4 个答案:

答案 0 :(得分:20)

一个非常简单的方法是使用这个正则表达式:

string trimmed = Regex.Match(input,@"^.{1,180}\b").Value;

唯一的问题是它可能包含尾随空格。为了解决这个问题,我们可以添加一些负面的后视:

string trimmed = Regex.Match(input,@"^.{1,180}\b(?<!\s)").Value;

这应该可以解决问题。

答案 1 :(得分:3)

如何查看char 180,然后向后移动以找到指示上一个单词开头的第一个字母(比如空格,逗号,感叹号等)?

答案 2 :(得分:0)

Conceptially

检查字符串是否超过180个字符。

将前180个字符作为子字符串。

使用“LastIndexOf”方法返回所需内容,以获取字符串的长度以及子字符串以返回相应的字符串。

代码:

        string InString;

        InString = "Your long string goes here";

        if (InString.Length>180) //Check the string length
        {
            InString = InString.Substring(0, 180); //Get the first 180 chars
            InString = InString.Substring(0,InString.LastIndexOf(" ")); //Stop at the last space
        }

这应该返回正确的字符串;虽然LastIndexOfAny允许你在你的EOL列表中添加其他字符。

答案 3 :(得分:0)

您只需在字符串类上使用普通命令:

string short = myStr.Substring(0, 180);
int end = short.LastIndexOfAny(new char[] {' ', '\t', '\n'}); //maybe more
return short.Substring(0, end);