0

テキストがあり、それを区切られた文字の配列に変換したいと考えています。例えば。:

'hello world' → ['h','e','l','l','o',' ','w','o','r','l','d']

ありがとう。

ps MATLAB 2013a

4

3 に答える 3

5

多くの点で、文字列 'hello world' は、区切られた文字の配列です。おそらく、各要素がスカラー文字であるセル配列を探しているのでしょう

x = mat2cell('hello world', 1, ones(11, 1))

x = 

    'h'    'e'    'l'    'l'    'o'    ' '    'w'    'o'    'r'    'l'    'd'
于 2013-11-05T12:55:15.170 に答える
5

元の質問はあまり意味がありません。文字列はすでに文字の配列です。

ここで他の人が取った仮定 (個々の文字のセル配列が必要) に基づいて構築すると、次のわずかに短い代替手段があります。

>> 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 テーブル値を取得します (まあ、doubles ですが、まあまあです)。

于 2013-11-05T14:30:35.170 に答える
3

私が理解している限り、文字列は本質的に文字の配列であるため、何もする必要はありません。

>> str = 'hello world'
str = hello world
>> str(1)
ans = h
>> str(2)
ans = e
>> str(3)
ans = l
于 2013-11-05T12:50:48.020 に答える