# Scanning strings in a string array

7 ビュー (過去 30 日間)
Viviana Arrigoni 2017 年 10 月 9 日

I see that if I declare a string between ' ', I can have access to each single character. For instance:
>> x = 'abc';
>> x(1)
ans = 'a'
While if I declare a string between " ", this doesn't happen:
>> x = "abc";
>> x(1)
ans = "abc"
Now, I need to scan an array of strings, the problem is that if the strings are between "", for example:
A = ["abc", "def", "ghi", "lmn"];
then it results length(A) = 4 (as I want it to be), but then if x = A(1) (i.e. x = "abc"), it is not possible to access to each character of x, and I need to modify such strings, so I need access to x's characters. On the other hand, if I declare the array as follows:
A = ['abc', 'def', 'ghi', 'lmn'];
it results that length(A) = 12 (I want it to be 4), and A(1) = 'a', and not 'abc' as I would like it to be! How do I overcome to this?

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

### 回答 (2 件)

Stalin Samuel 2017 年 10 月 9 日
A = {'abc', 'def', 'ghi', 'lmn'};
A{1}
ans = 'abc'
A{1}(1)
ans = 'a'
##### 0 件のコメント表示非表示 -1 件の古いコメント

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

Guillaume 2017 年 10 月 9 日

This is fully explained in the documentation. You use curly braces to access individual strings as char vector and then use normal indexing to access individual characters:
A = ["abc", "def", "ghi", "lmn"];
A{1}(1) %returns 'a'
If starting from your x, you still need to use the curly braces:
A = ["abc", "def", "ghi", "lmn"];
x = A(1);
x{1}(2) %returns 'b'
I'll admit it's a bit awkward.

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

### Community Treasure Hunt

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

Start Hunting!