4

在 Octave 中,我想将字符串转换为字符串矩阵。假设我有一个字符串:

s = "one two three one one four five two three five four"

我想将其拆分为一个矩阵,使其看起来像:

one
two
three
four
five

删除了重复项。

这段代码:

words = strsplit(s, ",") %Split the string s using the delimiter ',' and return a cell string array of substrings

只需创建一个words与 完全相同的矩阵s

如何将我的字符串转换为唯一单词的矩阵?

4

3 回答 3

5

以下也将实现这一点:

unique(regexp(string, '[A-z]*', 'match'))

或者,或者,

unique(regexp(s, '\s', 'split'))

与维尔纳的方案基本相同,但它节省了一个临时的,并且在需要进行更复杂的比赛时更加灵活。

于 2013-07-10T20:05:03.840 回答
3

在matlab上:

string = 'one two three one one four five two three five four'
% Convert it to a cell string:
cell_string = strread(string,'%s');
% Now get the unique values:
unique_strings=unique(cell_string,'stable')

如果您希望 char 数组的唯一值用空格分隔,请添加以下行:

unique_strings_with_spaces=cellfun(@(input) [input ' '],unique_strings,'UniformOutput',false) % Add a space to each cell
final_unique_string = cell2mat(unique_strings_with_spaces') % Concatenate cells
final_unique_string = final_unique_string(1:end-1) % Remove white space

输出:

'one two three four five'
于 2013-07-10T19:32:10.410 回答
2

words=unique( strsplit ('一二三一一四五二三五四',''))

话=

'five'    'four'    'one'    'three'    'two'
于 2014-01-08T15:27:31.547 回答