2009-06-24 6 views
2

長さが40文字を超えない文字列の配列を解析する必要がある長い文字列があります。私のためのこの難しい部分は、単語が途切れることを望んでいないので正規表現が最後の空白を40文字の前に見つけて、文字列をきれいにすることです。文字列を指定された長さにパースする(単語を切り捨てることなく)

+3

テキストが空白文字なしで40文字を超えている場合の計画はありますか? –

+0

私にワードラッピングのような音がします。これは役に立つかもしれません:http://blog.macromates.com/2006/wrapping-text-with-regular-expressions/ – Greg

答えて

0

部分文字列を右トリム:

(?<sub>.{1,40})(?:\s+|$)|(?<sub>.{40}) 

最初の選択肢は、きれいな休憩のためにしようとしますが、他は必要であれば、盲目的にチョッピングのためのフォールバックとしてそこにあります。その後、部分文字列はm.Groups["sub"].Capturesにあります。

9

この正規表現は、ジョブを実行する必要があります。

".{1,40}(|$)" 

(。引用は、文字列リテラルのためのものです)

これは単に1と40倍の間で任意の文字の貪欲なマッチングを行うために正規表現パーサに指示します(つまり、文字列の最後)が見つかる前に(できるだけ多く)読み込まれます。あなたが行くように

+0

楽しみのために私はRegexなしでこれを実装しようとしましたが、少年はこれに比べて醜いです。 – Greg

+0

@Greg:まあまあです。私は正規表現であまりにも熱心になる人ではありませんが、これは非常に望ましい状況です。 – Noldorin

関連する問題