2011-04-06 22 views
5

Tengo una matriz de caracteres (vector) de caracteres y quiero insertar espacios en blanco en un orden específico.Insertar espacios en blanco en la matriz de caracteres

Por ejemplo, tengo

['A','B','C','D','E','F','G','H','J','K','L','M','N','O'] 

y el vector con índices de espacios en blanco

[7 12] % white spaces should be add to 7 and 12 indexes (original string) 

y quieren tener

['A','B','C','D','E','F',' ','G','H','J','K', 'L', ' ','M','N','O'] 

¿Hay alguna función de construir-en? Empecé con un ciclo anidado para iterar el arreglo e instert '', pero se ve feo.

+0

¿Cómo identificar a dónde deben ir los espacios en blanco? ¿Un conjunto de índices para el * conjunto de salida *? ¿Un conjunto de índices para * la matriz de entrada * para agregar los espacios en blanco después? – gnovice

+0

Tengo una matriz de índices [7, 12 .... y quiero poner espacio en blanco allí y "mover horizontalmente" el resto de la cadena " –

Respuesta

5

Si tiene índices en su vector en el que desea insertar los espacios en blanco, se puede hacer lo siguiente:

>> str = 'ABCDEFGHJKLMNO';    %# Your string 
>> index = [7 12];      %# Indices to insert blanks 
>> index = index+(0:numel(index)-1);  %# Adjust for adding of blanks 
>> nFinal = numel(str)+numel(index);  %# New length of result with blanks 
>> newstr = blanks(nFinal);    %# Initialize the result as blanks 
>> newstr(setdiff(1:nFinal,index)) = str %# Fill in the string characters 

newstr = 

ABCDEF GHJKL MNO 
+0

thx pero esto no es lo que yo quería, tal vez no lo era claro. Pone 7 correctamente, pero el índice 12 se toma de la nueva matriz con un espacio - Debe ser ABCDEF GHJKL MNO. –

+0

@lukas: He actualizado mi respuesta, por lo que debería funcionar para usted ahora. Probablemente debería editar la pregunta para agregar el detalle adicional sobre su esquema de indexación – gnovice

+0

impresionante. Lo necesito para esto http://stackoverflow.com/questions/5558005/simple-text-reader-ocr-in-matlab/5572667#5572667 –

2

¿Quieres insertar espacios en los índices específicos?

chars = ['A','B','C','D','E','F','G','H','J','K','L','M','N','O']; 
%insert space after index 6 and after index 10 in chars 
charsWithWhitespace = [chars(1:6), ' ', chars(7:10), ' ', chars(11:end)]; 
+0

Esto funciona para el ejemplo específico, pero ¿cómo se generalizaría a un conjunto arbitrario de índices? – gnovice

Cuestiones relacionadas