MATLAB Answers

how to know if a char vector contains unwanted characters?

5 views (last 30 days)
Osama Al-Kurdi
Osama Al-Kurdi on 18 Feb 2020
Commented: Osama Al-Kurdi on 18 Feb 2020
I have this row vector
x=["0","1","2","3","4","5","6","7","8","9","."];
and let us say that there is a vector of char class called y
I want matlab to return true if all the characters in y is from x
and return false if there is any character in y out of x

  6 Comments

Show 3 older comments
Adam Danz
Adam Danz on 18 Feb 2020
"but it returns true when x is empty char"
In your question, x is a string array. So, is x a string array of char array? It matters.

Sign in to comment.

Answers (3)

Adam Danz
Adam Danz on 18 Feb 2020
Edited: Adam Danz on 18 Feb 2020
Following the description from your question, here's an anonymous function allCharsGood() with two inputs,
  • c is a 1xn char array
  • goodList is a 1xn string array
allCharsGood converts the char array c to a string array and then determines whether all elements of c are listed in goodList.
It returns true if all elements of c are in goodList.
It returns false if at least one element of c is not in goodList.
x=["0","1","2","3","4","5","6","7","8","9","."]; % String array
y1 = '3.1415926'; % char array
y2 = '9.56e20'; % char array
allCharsGood = @(c, goodList)all(ismember(string(cellstr(c')'), goodList));
allMatch = allCharsGood(y1,x) % true
allMatch = allCharsGood(y2,x) % false

  0 Comments

Sign in to comment.


JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH on 18 Feb 2020
y=["5","6","10"];%y example
condition=all(ismember(y,x))

  0 Comments

Sign in to comment.


Joseph Cheng
Joseph Cheng on 18 Feb 2020
check out the function ismember here is snippet of test code
x=["0","1","2","3","4","5","6","7","8","9","."];
y = ["3","3","5","8","1","2"];
checks = ismember(y,x);
disp(x)
disp(y)
disp(checks)
if sum(checks)==numel(y)
ret = true
else
ret = false
end
y = ["10","44","5","8","1","2"];
checks = ismember(y,x);
if sum(checks)==numel(y)
ret = true
else
ret = false
end
here you can see the two different y character arrays are checked against each other one by one.

  1 Comment

Stephen Cobeldick
Stephen Cobeldick on 18 Feb 2020
Complex:
if sum(checks)==numel(y)
ret = true
else
ret = false
end
Simple and efficient:
ret = all(checks)

Sign in to comment.

Sign in to answer this question.

Products


Release

R2018a