在弹出框中保持评估输入?

时间:2011-06-29 23:17:56

标签: wolfram-mathematica

我有以下mma代码:

$ButtonOptions = {Method -> "Queued"};
Button["Get List of IDs",
  ai = ToString@Input["Please Enter ID#s", {}];
  ai = StringReplace["ai", "\[Times]" -> ","];
  Print@ai,
  Background -> Yellow, Sequence @@ $ButtonOptions
  ]

当弹出输入窗口时,我需要用户在这些括号中输入多个ID号。他们喜欢使用Excel并粘贴到一列中,但是这会为每个ID编号生成一个新段落(Mathematica将其转换为空格,然后再转换为乘法,然后将所有ID相乘)。我需要一些方法来保持输入在输入时不进行评估而不会在输入框中显示Hold,这样StringReplace操作将起作用并在Mathematica乘以之前摆脱所有换行符ID在一起。

1 个答案:

答案 0 :(得分:5)

使用InputString的内容怎么样?

Button["Get List of IDs",
 ai = InputString["Please Enter ID#s", {}];
 ai = DeleteCases[StringSplit[ai, WhitespaceCharacter | ","], ""];
 Print[ai],
 Method -> "Queued"]

当然,您可能希望对ID类型进行更多检查。在上面的代码中,我使用StringSplit来分隔空格,制表符,换行符和逗号中的字符串 - 但这可能有点过于简单,而且不够健壮,不适合现实生活。