2011-01-28 146 views
0

我想剝離各種字符串(句子/短語)中的前75個字符,它看起來正確,但我需要確保現在的單詞在過程中被截斷。這意味着如果75個字符是一個單詞的一部分,它需要回落到單詞的開頭或最近的空格處。剝離字符串的前75個字符並保留字

我想將整個字符串剝離成單獨的單詞,然後計算組合單詞的長度並在我到達目標時停下來,但是在這種情況下我做了什麼,當它不是一個有效的句子時,只是一堆卡在一起的人物。我想過使用語法解析工具庫和解析成令牌等,但似乎過於複雜。

if text.length() > 75 then 
    ctext = text.remove(text.length, 75) & "..." 
endif 

我把省略號的結束,而是使用上述我也得到了錯誤:

沒有任何人有什麼更好的建議。

+0

你的想法是很健全,但我明白您的顧慮,如果有人寫了75個字符,並沒有空間,它不會在所有截斷。如果截斷更多的東西不是最好的嗎?少於75個字符的句子呢? – Skurmedel 2011-01-28 16:09:55

+0

Skurmedel:小於75個字符的句子是不相關的,因爲If'的條件已經是錯誤的。 – Joey 2011-01-28 16:11:21

回答

2

簡單地使用Regex.Replace()怎麼樣?

Regex.Replace(myString, "^.{0,75} ", "") 

這將匹配最多75個字符的字符串開頭和後面的空格。當然,你仍然需要考慮一開始就有77個非空格字符的字符串,但它已經讓你非常滿意了。

PowerShell的測試:

PS Home:\> $w = 'This is a quite long text. It might contain some words. Furthermore, it exceeds 75 characters of length and therefore must be truncated.' 
PS Home:\> $w.substring(0,75) 
This is a quite long text. It might contain some words. Furthermore, it exc 
PS Home:\> $w -replace '^.{0,75} ' 
exceeds 75 characters of length and therefore must be truncated.