# Transforming a string of letters into number based on each value equaling a number.

2 ビュー (過去 30 日間)
tban 2017 年 9 月 20 日
コメント済み: Stephen23 2017 年 9 月 20 日
If there are a finite amount of variables available for a string like... a,b,c,d,e....z, and each value is numbered 1,2,3,4,5....26, how can I write a short code to take in a string of letters like "bccddee" and get an output of "2+3+3+4+4+5+5".
I can define each letter as a number, but the 1st problem I encounter is braking up the string into a finite amount of values (7) it contains and then using a loop to go trough them inside the string and add them to the total.
Anyone know how to do this or atleast can point me towards the direction of how I can get within a letter string and convert it to numbers which then i can add?

サインインしてコメントする。

### 回答 (4 件)

José-Luis 2017 年 9 月 20 日
str = 'bccddee';
result = sum(str - 'a' + 1)
##### 1 件のコメント表示非表示 なし
Stephen23 2017 年 9 月 20 日
+1 nice and simple. Why waste time writing anything else?

サインインしてコメントする。

tban 2017 年 9 月 20 日
Well, mystring is made out of letters and length is only used for numbers, No?
##### 0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

tban 2017 年 9 月 20 日
using this and it works, will let you know if i have any more questions
y=char('john') y =john >> length(y) ans = 4
char needs to be used.
##### 0 件のコメント表示非表示 -1 件の古いコメント

サインインしてコメントする。

tban 2017 年 9 月 20 日
mystring=char('word')
len=length(mystring)
w=23; o=15;r=18;d=4;
total = 0;
for i = 1:length(mystring)
if (mystring(i) == 'w')
total = total + w;
elseif (mystring(i) == 'o')
total = total + o;
elseif (mystring(i) == 'r')
total = total + r;
elseif (mystring(i) == 'd')
total = total + d;
end
end
this works
##### 1 件のコメント表示非表示 なし
John Chilleri 2017 年 9 月 20 日
Glad it's working, but I don't think you need to use char:
>> length('abcdef')
ans =
6
(works in my command window).

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!