2013-07-30 15 views
6

Sto cercando di trovare una funzione che estrae i caratteri in una determinata posizione all'interno di una stringa. Per esempio, io ho un nome di file lungo con una data in esso, e voglio finire con solo la data:Estrai caratteri in una posizione impostata

'LT50420331984221PAC00_B7.tif' 

e voglio solo il '1.984.221' parte. Ho trovato una funzione complicata, ma mi chiedevo se esiste una soluzione più elegante.

+0

Non vedo come questo sarà universalmente possibile rispondere alle informazioni fornite. La parte della data: inizia sempre dopo i caratteri 'n'? Inizia sempre con '19XX' o' 20XX'? Esegui sempre per i personaggi 'n'? Potete fornire ulteriori informazioni per rendere più semplice la risposta? – thelatemail

+0

Puoi aggiungere la soluzione all'OP per favore? – agstudy

+0

Tutto è spiegato nel wikibook di programmazione R: http://en.wikibooks.org/wiki/R_Programming/Text_Processing – PAC

risposta

13

Se si conosce la posizione esatta della data nella stringa è possibile utilizzare

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

Se la parte della data è _sempre_ nella stessa posizione, questo è quello che userei. – Jesse

3

Ad esempio:

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

Qui ho supporre che la data è di 7 cifre prima di una lettera maiuscola.

+0

se stai assumendo la lunghezza della stringa, allora qual è il vantaggio di usare 'sub' su' substr'? –

+1

@RicardoSaporta Non sto assumendo la lunghezza della stringa. La lunghezza è la lunghezza di una data in un determinato formato. Presumo la posizione di questa data. – agstudy

+0

sì, stiamo dicendo le stesse cose, usando solo termini diversi. Mi stavo chiedendo che cosa si ottiene usando 'sub' in questo specifico contesto che non si può avere usando' substr'? –