我需要缩短字符串..
假设我们有一个长度为500的字符串。
我只想要它的第一部分 - 最多180个字符,以最后一个字结尾,然后才达到180.我不想剪短字符串在一个单词的中间。
这是如何实现的?它没有那么好的表现......它是一天发生几次,而不是更多。
答案 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);