Vb.net 去掉字符串的前75个字符并保留单词

Vb.net 去掉字符串的前75个字符并保留单词,vb.net,visual-studio-2008,Vb.net,Visual Studio 2008,我试图从各种字符串(句子/短语)中去掉前75个字符,这似乎是正确的,但我需要确保在这个过程中,现在的单词被截断。这意味着,如果75个字符是单词的一部分,则需要返回到单词的开头或最近的空格 我想把整个字符串拆分成单独的单词,然后计算组合单词的长度,当我到达目标时停止,但是如果它不是一个有效的句子,只是一堆字符挤在一起,我该怎么办呢。我曾想过使用语法分析工具库,并将其解析为标记等,但这似乎过于复杂了 if text.length() > 75 then ctext = text.rem

我试图从各种字符串(句子/短语)中去掉前75个字符,这似乎是正确的,但我需要确保在这个过程中,现在的单词被截断。这意味着,如果75个字符是单词的一部分,则需要返回到单词的开头或最近的空格

我想把整个字符串拆分成单独的单词,然后计算组合单词的长度,当我到达目标时停止,但是如果它不是一个有效的句子,只是一堆字符挤在一起,我该怎么办呢。我曾想过使用语法分析工具库,并将其解析为标记等,但这似乎过于复杂了

if text.length() > 75 then
    ctext = text.remove(text.length, 75) & "..."
endif
我将省略号放在末尾,但使用上面的命令,我也会得到错误:


有人有更好的建议吗。

简单使用Regex.Replace()怎么样

这将匹配字符串开头最多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.

你的想法很好,但我理解你的担心,如果有人写了75个字符,没有空格,它就不会被截断。截短一点不比什么都不截短好吗?小于75个字符的句子呢?Skurmedel:小于75个字符的句子是不相关的,因为如果
中的条件已经为假。@Joey:是的,你是对的。我需要更多的茶。是的,让我试试,并将conditionUsed dim reg设置为regex=new regex(“^.{0,75}”),regexoptions.ignorecase dim设置为match=reg.match(。。。
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.