repalacement of string with phone numbers

7 views (last 30 days)
Hi; I am going to attempt that question: Each number on older telephone keypads, except 0 and 1, corresponds to three uppercase letters as shown in this list: 2 ABC, 3 DEF, 4 GHI, 5 JKL, 6 MNO, 7 PRS, 8 TUV, 9 WXY A phone-number specification can include uppercase letters other than Q and Z, digits, the # and * signs, spaces, parentheses and dashes. Write a function called dial that takes as its input argument a string of any length that includes only these characters and returns as its output argument a string containing the corresponding telephone number with only digits, spaces, and the # and * signs. Specifically, it does not change the digits, the # and * signs, or the spaces, but it replaces each parenthesis with a space and each dash with a space, and it converts each uppercase letter to a digit according to the list shown above. Here is the input and output for one example of a call of the function: Input: '1 (FUN) DOG-4-YOU #2' Output: '1 386 364 4 968 #2' Note that in this example there are three spaces in the input string and seven spaces in the output string. If the input does not meet the phone-number specification given above, the function returns an empty array. You are not allowed to use the built-in function strrep. I have no idea how make such function? help me... Thanks

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 4 Jun 2015
Edited: Andrei Bobrov on 4 Jun 2015
function out = funbyMuhammad(in_char)
abc = ['()+-_',setdiff('A':'Z','QZ')];
d = ['#*','0':'9',' '];
if all(ismember(in_char,[abc,d]))
ii = [' ',sprintf('%d',kron(2:9,[1 1 1]))];
[lo,idx] = ismember(in_char,abc);
out = in_char;
out(lo) = ii(idx(lo));
else
out = [];
end
end
using
>> out = funbyMuhammad('1 (FUN) DOG-4-YOU #2')
out = 1 386 364 4 968 #2
>>
  7 Comments
Wasi von Deutschland
Wasi von Deutschland on 28 May 2017
Hi @Andrei Bobrov Could you please tell me if Q and Z are allowed in the exercise then how one can do it? such as number 7 'PQRS' and number 9 'WXYZ' and number 8 as rest will work.

Sign in to comment.

More Answers (2)

Jan Orwat
Jan Orwat on 4 Jun 2015
Edited: Jan Orwat on 4 Jun 2015
You can try regular expressions:
>> regexprep('1A23D4',{'A','D'},{'2','3'})
ans =
122334

liu yuhui
liu yuhui on 1 Dec 2015
Thank you very much.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!