フィルターのクリア

Calling characters from character arrays

4 ビュー (過去 30 日間)
Gokhan Kayan
Gokhan Kayan 2018 年 1 月 22 日
コメント済み: Gokhan Kayan 2018 年 1 月 22 日
I have an charecter array that contains so many characters and I want to call 4 th character from each row. How can I do it ?
For example consider that I have 6x1 character matrix like
Adana
mersin
hatay
iskenderun
cemre
cebir
I want to call 4 th character of each row and form a new 6x1 matrix with them like
n
s
a
e
r
i
  1 件のコメント
Guillaume
Guillaume 2018 年 1 月 22 日
What you have is either
  • a 6x1 cell array, where each cell is a 1xN char array
  • a 6x1 string array (only in R2016b or later)
This is definitively not a 6x1 character array, which by definition, would have 6 letters vertically and only one letter horizontally.

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

採用された回答

Birdman
Birdman 2018 年 1 月 22 日
編集済み: Birdman 2018 年 1 月 22 日
str='adana mersin hatay iskenderun cemre cebir';
str=regexp(str,'[a-z]*','match');
for i=1:numel(str)
a{i}=str{i}(4);
end
or instead of for loop:
cellfun(@(x) x(4),str)
EDIT:
After Guillaume's warning, different and easier approach for constructing the demo data and solution:
str='adana mersin hatay iskenderun cemre cebir';
str=strsplit(str,' ');
cellfun(@(x) x(4),str)
  3 件のコメント
Birdman
Birdman 2018 年 1 月 22 日
Yes, I understood what you mean about it. Thanks.
Gokhan Kayan
Gokhan Kayan 2018 年 1 月 22 日
Thank you so much :)

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

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2018 年 1 月 22 日
"For example consider that I have 6x1 character matrix like"
No, a 6 x 1 character matrix cannot have multiple characters in the same row. You might have a 6 x 1 string matrix, or you might have a 6 x 1 cell array of characters.
If you have 6 x 10 (or wider) character array A, then A(:,4)
If you have a 6 x 1 cell array of characters or a 6 x 1 string array A then one of the approaches is cellfun(@(S) S(4), A) . In the case of string arrays, another approach is extractBetween(A, 4, 4) {with no loop} -- but note that this would return a 6 x 1 string array with each string being a single character long, so if you wanted the results as 6 x 1 char then you would need to char() the result of the extractBetween()
  1 件のコメント
Gokhan Kayan
Gokhan Kayan 2018 年 1 月 22 日
Thank you :)

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

カテゴリ

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