Octave键盘输入函数来过滤连接字符串和整数?

时间:2015-07-24 01:02:48

标签: input filter keyboard concatenation octave

如果我们写12wkd3,如何在八度音程中选择/过滤123为整数?

octave中的例子:

A = input("A?\n")  
A?  
12wkd3   
A = 123 

虽然12wkd3是用户键盘输入,A = 123是预期答案。

1 个答案:

答案 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()