2013-07-30 16 views
6

文字列内の特定の位置に文字を抽出する関数を見つけようとしています。例えば、私はそれの日付と長いファイル名を持っている、と私は日付だけで終わるしたい:設定された位置で文字を抽出する

'LT50420331984221PAC00_B7.tif' 

と私は唯一の「1984221」部分をしたいです。 私は複雑な機能を考え出しましたが、もっと洗練された解決方法があるのだろうかと思っていました。

+0

提供された情報でこれが普遍的な答えを得ることはどういうことか分かりません。日付部分はいつも 'n'文字の後に始まりますか?常に '19XX'または' 20XX'で始まりますか?常に 'n'文字のために動く?これを簡単に答えるための情報を提供できますか? – thelatemail

+0

OPにソリューションを追加できますか? – agstudy

+0

すべてのことがRプログラミングのwikibookで説明されています:http://en.wikibooks.org/wiki/R_Programming/Text_Processing – PAC

答えて

13

あなたは、文字列に日付の正確な位置を知っている場合は、例えば

substr('LT50420331984221PAC00_B7.tif', 10, 16) 
+1

日付部分が同じ位置に常にある場合は、これを使用します。 – Jesse

3

を使用することができます。

ここ
gsub('(.*)([0-9]+{7})[A-Z].*','\\2','LT50420331984221PAC00_B7.tif') 
"1984221" 

を私は日付が7桁の大文字の前にあることを前提としています。

+0

文字列の長さを仮定している場合、 'substr'より' sub'を使う利点は何ですか? –

+1

@RicardoSaporta私は文字列の長さを想定していません。長さは、特定の形式の日付の長さです。私はこの日付の位置をとる。 – agstudy

+0

はい、私たちは同じことを言っています。異なる用語を使用しています。私はあなたが 'substr'を使うことができないこの特定の文脈で' sub'を使うことから何が得られるのか疑問に思っていましたか? –

関連する問題