【问题标题】:Input Mask from the console从控制台输入掩码
【发布时间】:2012-05-22 03:40:47
【问题描述】:

你能帮我处理输入掩码吗?

字符串格式 = "X-XX-XXX"

X 是来自控制台/键盘的用户输入。

我一直想在用户输入字符串格式时显示破折号 (-)。

你能帮我解决我的问题吗?

【问题讨论】:

  • 据我所知,仅使用标准输入是不可能的。您可能需要 GUI 解决方案。
  • 这在控制台项目中无法实现。您想在哪里使用它,桌面还是 Web 应用程序?
  • 对照正则表达式检查输入怎么样?
  • 我不确定这是否可能。理论上你应该异步调用方法,然后在控制台的同一行返回一些值
  • @ChrisBlake,这是可能的。您可以创建一个类似于 echo 的控制台,就像以前使用的 telnet 一样。但这不是一个好的解决方案。其他是写 - 在用户键输入后也移动光标。

标签: java


【解决方案1】:

在键入时不可能显示整个掩码,但您可以做的是一次读取单个字符,当您到达相关位置时,输出一个破折号。

编辑:可以在控制台中移动光标,这样您就可以输出掩码,然后相应地调整光标(取决于按下了多少键)。 p>

我刚刚发现了这个here

char escCode = 0x1B;
int row = 10; int column = 10;
System.out.print(String.format("%c[%d;%df",escCode,row,column));

这应该将光标移动到控制台上的位置 10,10。

【讨论】:

  • 我打算在桌面上使用它,我不使用 GUI。
  • 据我所知,我的方法可以在命令行中使用。
  • @Liam,如果我们写入控制台掩码并将光标位置重置为 0 会怎样?这不是一件容易的事。但这是可能的。
  • @ivanangelo GUI: Graphical User Interface。每个使用 PC 的人都必须使用 GUI :)。问题是您的 GUI 是控制台应用程序还是桌面应用程序(带有窗口和所有这些时尚)?
  • @mendoza 我在桌面应用程序中使用它。
【解决方案2】:

不幸的是,Java 没有无缓冲的控制台 I/O。您可能必须通过 JNI 绑定诅咒:

http://plindenbaum.blogspot.com/2008/01/java-native-interface-jni-notebook.html

【讨论】:

  • 所以,我将使用 console.nextLine()。但是当破折号已经存在时。在我插入第一个字符后,它将跳转到第三个字符(破折号(-)旁边)等等。
猜你喜欢
  • 1970-01-01
  • 2011-12-29
  • 2014-01-22
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多