2011-01-28 3 views
0

私は様々な文字列(文章)から最初の75文字を取り除こうとしていますが、それは正しいようですが、今は単語が切り詰められていることを確認する必要があります。つまり、75文字が単語の一部である場合、それは単語または最も近いスペースの先頭に戻る必要があることを意味します。文字列の最初の75文字を取り除き、単語を維持する

私は、文字列全体を別々の単語にストリッピングし、私が目標に到達したときに止まるが、有効な文章ではない場合にはどうすればよいのだろうか?私は文法解析ツールライブラリを使って、トークンなどに解析することを考えましたが、それは複雑すぎるようです。

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

私は最後に省略記号を置くが、私は、エラーを取得する上で使用して:

誰もが任意のより良い提案を持っていないし。

+0

あなたの考えはかなり音ですが、誰かが75の文字とスペースなしを書いた場合、私は、あなたの懸念を理解し、それがすべてでは切り捨てられません。おそらく何もないより少しだけ切り捨てるほうが良いのではないでしょうか? 75文字未満の文章はどうですか? – Skurmedel

+0

Skurmedel:「If」の条件が既に偽であるため、75文字未満の文は無関係です。 – Joey

+0

@Joey:はい、そうです。私はもっ​​と紅茶が必要です。 – Skurmedel

答えて

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. 
+0

ええ、それを試してみましょうcondition – vbNewbie

+0

は、正規表現=新しい正規表現( "^。{0,75}"、regexoptions.ignorecase dim m as match = reg.match ... – vbNewbie

関連する問題