テキストがあり、それを区切られた文字の配列に変換したいと考えています。例えば。:
'hello world' → ['h','e','l','l','o',' ','w','o','r','l','d']
ありがとう。
ps MATLAB 2013a
多くの点で、文字列 'hello world' は、区切られた文字の配列です。おそらく、各要素がスカラー文字であるセル配列を探しているのでしょう
x = mat2cell('hello world', 1, ones(11, 1))
x =
'h' 'e' 'l' 'l' 'o' ' ' 'w' 'o' 'r' 'l' 'd'
元の質問はあまり意味がありません。文字列はすでに文字の配列です。
ここで他の人が取った仮定 (個々の文字のセル配列が必要) に基づいて構築すると、次のわずかに短い代替手段があります。
>> num2cell('hello world')
ans =
'h' 'e' 'l' 'l' 'o' ' ' 'w' 'o' 'r' 'l' 'd'
別の方法:
>> regexp('hello world', '.', 'match')
ans =
'h' 'e' 'l' 'l' 'o' ' ' 'w' 'o' 'r' 'l' 'd'
あなたも見ることができますstrsplit
(R2013aかそこらで導入されました)
num2cell
の関連セクションに示すように、入力引数のクラスを保持しますnum2cell
。
c = cell(size(a));
for i=1:numel(a)
c{i} = a(i);
end
基本: 内部では、文字列 (== の配列chars
) は基本的に 8 ビット整数の配列であり、別の方法で解釈されます。入力'hello world'+0
して意味を確認してください。整数の配列で個々の文字の UTF-8 テーブル値を取得します (まあ、double
s ですが、まあまあです)。
私が理解している限り、文字列は本質的に文字の配列であるため、何もする必要はありません。
>> str = 'hello world'
str = hello world
>> str(1)
ans = h
>> str(2)
ans = e
>> str(3)
ans = l