如果我们写12wkd3
,如何在八度音程中选择/过滤123
为整数?
octave中的例子:
A = input("A?\n")
A?
12wkd3
A = 123
虽然12wkd3
是用户键盘输入,A = 123
是预期答案。
答案 0 :(得分:0)
假设您正在寻找的一般形式是从用户输入中获取任意字符串,删除任何非数字字符串,并将结果存储为整数:
A = input("A? /n",'s');
A = int32(str2num(A(isdigit(A))));
示例输出:
A?
324bhtk.p89u34
A = 3248934
澄清上面写的内容:
在输入语句中,'s'
参数导致答案存储为字符串,否则首先由Octave评估。大多数输入会产生错误,其他输入可能会被解释为函数或变量。
isdigit(A)
为A
生成一个逻辑数组值,对于0-9数字的任何字符都为1,否则为0。
isdigit('a1 3 b.') = [0 1 0 1 0 0 0]
A(isdigit(A))将仅使用与上述逻辑数组中的1对应的值从A生成子字符串。
A(isdigit(A)) = 13
仍会返回一个字符串,因此您需要使用str2num()
将其转换为数字。然而,它输出一个双精度数。所以最后要把它变成一个整数,你可以使用int32()