180字

2009-08-05 23 views
4

我需要縮短串下來結尾的字符串的前幾個字符..180字

假設我們有長度500

我只希望它的第一部分的字符串 - 最多180個字符,以結尾字結尾,然後達到180.我不想在字中間切短字符串。

這是如何實現的?它不一定要表現得那麼好。這是每天發生幾次的事情,而不是更多。

回答

21

一個非常簡單的方法是使用這個表達式:

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

與一個唯一的問題是,它可能包含尾隨空白。爲了解決這個問題,我們可以添加一點負面的後視:

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

這應該有所斬斷。

+0

這是一個很好的! – 2009-08-05 10:16:52

3

如何查看字符180,並向後移動以找到指示前一個單詞開始的第一個字符(可以說空格,逗號,感嘆號等)?

+0

爲什麼使用迭代處理時,有建於工具來找到你在找什麼? – Hooloovoo 2009-08-05 09:03:47

+0

+!爲我工作,可能很快。 – kenny 2009-08-05 10:37:45

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列表中。

0

你只需要使用上串類正常的命令:

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