2015-09-11 2 views
1

Предполагая, что у меня есть ячейки строк следующим образом:MATLAB - объединить строки ячейки сохраняя цитаты

ss = {'one', 'two', 'three'} 

И я хочу, чтобы соединить эти строки в 1 строку. Используйте strjoin я получил:

>> str = strjoin(ss, ', ') 
str = 
one, two, three 

Есть ли короткий путь (1 - 2 строк кода), чтобы сохранить все цитаты ', следующим образом:

str = 'one', 'two', 'three' 

ответ

3

Попробуйте поставлять sprintfcomma-separated list из строк содержали в ss. В format specifier вы можете включить кавычки, запятую и пробел. Последняя запятая и пространство необходимо удалить в конце.

result = sprintf('''%s'', ', ss{:}); %// cat the strings with quotes, comma and space 
result = result(1:end-2); %// remove extra comma and space 
+0

Я бы сделал это таким образом, тоже, но вы были быстрее :) – rayryeng

+0

Большое спасибо как к Луис Mendo и rayryeng. Оба ответа работают очень хорошо. Я принял Luis's, так как это первый, и для вашего 1 строкового кода внизу. – scmg

+0

@scmg - Я бы поступил так же. Спасибо и удачи! – rayryeng

2

Вы можете возможно использовать regular expressions на мобильный массив строк, чтобы вставить цитату до и после строки, а затем использовать strjoin на том, что:

ss = {'one', 'two', 'three'}; 
ss2 = regexprep(ss, '.+', '''$0'''); 
out = strjoin(ss2, ', '); 

regexprep заменяет строки в массив ячеек, которые соответствуют образец с чем-то другим. В этом случае я нахожу сбор всего слова с шаблоном .+, а затем помещаю одиночную цитату перед словом и после слова. Это достигается ''$0''. Каждая пара '' представляет собой одинарную цитату. Я присоединяюсь к строкам после запятой, разделенной пробелами.

Получаем:

out = 

'one', 'two', 'three' 
+1

Ужасно, но единственная строка (на основе этой идеи): 'out = ['' '' strjoin (ss, '' ',' '') '' '']' –

+0

@LuisMendo - OH, который будет работать. Определенно кодекс гольфа достойный :) Я оставлю 'regexprep', хотя для ясности. Спасибо за идею! – rayryeng

+0

Конечно, гораздо яснее! –