2011-01-28 68 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.