2016-04-07 21 views
2

Girdi görürsün:Bölünmüş Matlab'de iki bölüme bir dize

InputStr1 = 'this-is-a-boy-5'; 
InputStr2 = 'this23-is-a-boy-10'; 
InputStr3 = 'this-41'; 

Çıktı olmalıdır:

Output1 = ['this-is-a-boy'] [5] 
Output2 = ['this23-is-a-boy'] [10] 
Output3 = ['this'] [41] 

Ben ilk dizeyi ayırabilirsiniz iki parça öyle içine bu dizeleri bölmek istediğiniz ve son sayıdan. strsplit()'u denedim ama yardımcı olmadı.

+0

olarak kullanabilirsiniz (sayı geçen her zaman olduğu varsayılarak) çalışması gerekir regex'in mi? Ayrıca kodunuzu da gönderin. –

cevap

2

Dizenin sonundan önceki numaradan önce görüntülenen -'u bölmeyi deneyin.

Regex:-(?=\d+$)

Açıklama: sayı dizesinin sonunda ise

  • (?=\d+$) ileri bakar. Ve daha önce - ile eşleşir. Buna bölünebilirsin.

Regex101 Demo

5

Bu strsplit kullanmak istiyorsanız

data = 'this-is-a-boy-5' 
toks = regexp(data, '(.*)-(\d+)$', 'tokens'); 
display(toks) 

sensin Ne

toks = strsplit(data, '-(?=\d+$)', 'DelimiterType', 'RegularExpression'); 
display(toks) 
+0

Regex'in kabul edilen cevaptan daha iyi kullanılması için oylama. –

+0

@ArleighHix teşekkürler .. :) – rock321987