Entering a whole word into an arary.

7 visualizaciones (últimos 30 días)
Mark Grano
Mark Grano el 5 de Nov. de 2012
Hello I just have a simple question. I'm working on a project that calculates the resistor value when the user enters a five color code. I cannot figure out how to put each word as a single element in an array. so if I enter the code as a single string: blue black green red orange, I would like to make a(1)=blue, a(2)=black, etc..
Thanks in advance!

Respuesta aceptada

Matt Fig
Matt Fig el 8 de Nov. de 2012
Editada: Matt Fig el 9 de Nov. de 2012
This works whether your user enters only commas between words, only spaces, or both (even colons or semicolons!). I test it out in a FOR loop only to see if entering different ways people might use will still get us our values.
for ii = 1:4
% You only need these three lines, no loop.
I = input('Enter the colors you want: ','s');
I(isstrprop(I,'punct')) = ' ';
C = regexp(I(~isstrprop(I,'punct')),'\s+','split')
end
Enter the colors you want: black gold green
C =
'black' 'gold' 'green'
Enter the colors you want: yellow, peach, orange
C =
'yellow' 'peach' 'orange'
Enter the colors you want: purple:spicy:fresh
C =
'purple' 'spicy' 'fresh'
Enter the colors you want: Yummy; grape;cherry
C =
'Yummy' 'grape' 'cherry'
  6 comentarios
per isakson
per isakson el 9 de Nov. de 2012
>> lower('ABC')
ans =
abc
Mark Grano
Mark Grano el 9 de Nov. de 2012
perfect thanks for your help!

Iniciar sesión para comentar.

Más respuestas (4)

Azzi Abdelmalek
Azzi Abdelmalek el 5 de Nov. de 2012
Editada: Azzi Abdelmalek el 5 de Nov. de 2012
a={'blue' , 'red', 'green'}
a(1)
a(2)
%or
a=struct('color',{'red','blue','green'})
a(1).color
a(2).color
  10 comentarios
Mark Grano
Mark Grano el 9 de Nov. de 2012
hmm, I can see how that would get complicated. I just wanted a way instead of having 6 different dialog boxes, to just have one so I could enter all the colors in at once.
Walter Roberson
Walter Roberson el 9 de Nov. de 2012
You can create a figure() that you have the uicontrol() in. listdlg() creates a figure and appropriate controls for its operations; the only difference is that it is already written for you.

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 5 de Nov. de 2012
Editada: Walter Roberson el 5 de Nov. de 2012

Image Analyst
Image Analyst el 5 de Nov. de 2012
Maybe you'd like to use the built-in strtok(). I prefer allwords:
>> theWords = allwords('blue black green red orange')
theWords =
'blue' 'black' 'green' 'red' 'orange'
theWords is a cell array because the words can have different lengths so it cannot be a rectangular character array.

Walter Roberson
Walter Roberson el 6 de Nov. de 2012
Similar to strtok() is to use regexp() with the 'split' option. After getting the input from the user (e.g., questdlg() or a uicontrol() editbox),
theWords = regexp(S, 'split');
Just as with allwords(), theWords will be a cell array.
Note that theWords(1) would be a cell array containing a string, rather than the string itself. theWords{1} would be the string.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by