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

Ros*_*sie 3 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
  ]
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*mon 5

用的东西怎么样InputString

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

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