MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

Flipping specific segment of string rather than the whole string

Samiha Shimla さんによって質問されました 2019 年 1 月 17 日
最新アクティビティ Samiha Shimla さんによって コメントされました 2019 年 1 月 17 日
If I have a string
str='One two buckle my shoe'
how can I flip it to look as follows?
strM='enO owt elkcub ym eohs'
I have tried using 'flip' and 'reverse' in a few different ways but every time I get
strN='eohs ym elkcub owt enO'

  2 件のコメント

Jan
2019 年 1 月 17 日
This sounds like a homework question. Please mention this explicitly, because then we can help you to solve the problem by your own. This is better than submitting a solution written by someone else.
Hey, rest assured this is not homework. It is a section of a past paper I am solving. I was specifically struggling with this bit. Thanks for the help!

サインイン to comment.

3 件の回答

回答者: Stephen Cobeldick
2019 年 1 月 17 日

regexprep(str,'\w+','${fliplr($0)}')

  2 件のコメント

Jan
2019 年 1 月 17 日
+1. Compact and clear!
Nice use of a function in a regexp!

サインイン to comment.


回答者: madhan ravi
2019 年 1 月 17 日
編集済み: madhan ravi
2019 年 1 月 17 日

str='One two buckle my shoe';
b=strsplit(str,' ');
strM=strjoin(cellfun(@flip,b,'un',0))
b=flip(strsplit(str,' '));
strN=strjoin(cellfun(@flip,b,'un',0))
Gives:
str =
'One two buckle my shoe'
strM =
'enO owt elkcub ym eohs'
strN =
'eohs ym elkcub owt enO'

  4 件のコメント

>> b=strsplit(str,' ') % splits the string as cell arrays when there is space in between words
b =
1×5 cell array
{'One'} {'two'} {'buckle'} {'my'} {'shoe'}
>> c=cellfun(@flip,b,'un',0) % flip function applied to each cell (words)
c =
1×5 cell array
{'enO'} {'owt'} {'elkcub'} {'ym'} {'eohs'}
>> strM=strjoin(c) % cell array combined as one string array
strM =
'enO owt elkcub ym eohs'
>> bb=flip(strsplit(str,' ')) % flips the cell array
bb =
1×5 cell array
{'shoe'} {'my'} {'buckle'} {'two'} {'One'}
>> bbb=cellfun(@flip,bb,'un',0) % flip function applied to each cell (words)
bbb =
1×5 cell array
{'eohs'} {'ym'} {'elkcub'} {'owt'} {'enO'}
>> strN=strjoin(bbb) % cell array combined as one string array
strN =
'eohs ym elkcub owt enO'
>>
Thanks a lot! This makes sense now! ^_^
Anytime :)

サインイン to comment.


回答者: Sean de Wolski
2019 年 1 月 17 日

str=join(reverse(split("One two buckle my shoe")))

  1 件のコメント

This is an excellent way of doing it! Thanks Sean!

サインイン to comment.



Translated by