【问题标题】:Pre-populating input in Java console在 Java 控制台中预填充输入
【发布时间】:2010-06-21 22:28:38
【问题描述】:

我正在制作一个基于控制台的 Java/Groovy 应用程序,该应用程序在文本文件中进行大量查找/替换。比如说,如果程序知道你上次用bar 替换了foo,它应该默认知道你可能也想用bar 替换下一个foo。我的想法是预先填充 What would you like to rename this to? 提示符的输入字段,这样您就不必不必要地重新输入它,但我找不到在 Java 中执行此操作的简单方法。

这可能吗?如果可以,是否推荐这样做?

【问题讨论】:

    标签: java groovy replace find input-buffer


    【解决方案1】:

    为什么不假设空输入等于最后插入的输入?管理stdin..的预填充会更容易。

    无论如何,如果你打算有一个最近的列表,我建议你有一个特殊的字符组合来告诉最后一个或前一个等等。

    【讨论】:

    • 这实际上是当前的默认行为。但是,我认为预先填写输入字段比占用更多空间说“找到 Y,以前的值是 X,按 Enter 使用它”更有效。
    【解决方案2】:

    有很多有用的方法可以解决这个问题。您可以只记住用户替换的最后一个值,或者您可以保留一个包含最后 n 个替换的缓存,以防用户请求类似的替换。或者您可以忽略之前的输入,并在每次需要时强制用户提供替换。正确的方法取决于替换操作的频率、用户是否经常替换相同的值等。您必须根据您的问题域和您想要提供给用户的交互类型来选择正确的解决方案。

    实施这些解决方案很简单。最直观的是将替换缓存保存在一个简单的文本文件中,在启动时加载它并在关闭时保存缓存。替换缓存也可以序列化为文件,以纯文本形式写入。

    【讨论】:

    • 然而,我的问题是不知道如何从先前匹配的映射->替换,而是从找到匹配并将先前的替换插入输入缓冲区。如果新的替换几乎相同,但在末尾附加了一个数字,这将特别有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多