Entering a whole word into an arary.

7 ビュー (過去 30 日間)
Mark Grano
Mark Grano 2012 年 11 月 5 日
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!

採用された回答

Matt Fig
Matt Fig 2012 年 11 月 8 日
編集済み: Matt Fig 2012 年 11 月 9 日
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 件のコメント
per isakson
per isakson 2012 年 11 月 9 日
>> lower('ABC')
ans =
abc
Mark Grano
Mark Grano 2012 年 11 月 9 日
perfect thanks for your help!

サインインしてコメントする。

その他の回答 (4 件)

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 11 月 5 日
編集済み: Azzi Abdelmalek 2012 年 11 月 5 日
a={'blue' , 'red', 'green'}
a(1)
a(2)
%or
a=struct('color',{'red','blue','green'})
a(1).color
a(2).color
  10 件のコメント
Mark Grano
Mark Grano 2012 年 11 月 9 日
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 2012 年 11 月 9 日
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.

サインインしてコメントする。


Walter Roberson
Walter Roberson 2012 年 11 月 5 日
編集済み: Walter Roberson 2012 年 11 月 5 日

Image Analyst
Image Analyst 2012 年 11 月 5 日
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 2012 年 11 月 6 日
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.

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by