在Java控制台中预填充输入

在Java控制台中预填充输入,java,groovy,replace,find,input-buffer,Java,Groovy,Replace,Find,Input Buffer,我正在制作一个基于控制台的Java/Groovy应用程序,它在文本文件中进行大量查找/替换。比如说,如果程序知道您上次将foo替换为bar,那么默认情况下,它应该知道您可能还想将下一个foo替换为bar。我的想法是预先填充提示符的输入字段,您想将其重命名为什么?提示符,这样您就不必不必要地重新键入它,但我找不到一种简单的方法在Java中实现这一点 这可能吗?如果可能,这是一种推荐做法吗?为什么不假设一个空输入等于最后一次插入的输入?管理预先填充的stdin将非常容易 在任何情况下,如果你计划有一

我正在制作一个基于控制台的Java/Groovy应用程序,它在文本文件中进行大量查找/替换。比如说,如果程序知道您上次将
foo
替换为
bar
,那么默认情况下,它应该知道您可能还想将下一个
foo
替换为
bar
。我的想法是预先填充
提示符的输入字段,您想将其重命名为什么?
提示符,这样您就不必不必要地重新键入它,但我找不到一种简单的方法在Java中实现这一点


这可能吗?如果可能,这是一种推荐做法吗?

为什么不假设一个空输入等于最后一次插入的输入?管理预先填充的
stdin
将非常容易


在任何情况下,如果你计划有一个最近的列表,我建议你有一个特殊的字符组合来告诉上一个或上一个等等。

为什么你不假设一个空输入等于最后插入的输入?管理预先填充的
stdin
将非常容易


在任何情况下,如果你计划有一个最近的列表,我建议你有一个特殊的字符组合来告诉最后一个或之前的等等。

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


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

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


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

这实际上是当前的默认行为。然而,我认为,预填充输入字段比占用更多空间更有效,比如“找到Y,前面的值是X,按enter键使用它。”这实际上是当前的默认行为。然而,我想,预填充输入字段要比占用更多空间更有效,比如说“找到Y,以前的值是X,按enter键使用它。”然而,我的问题是不知道如何从,比如,先前匹配->替换的映射,但来自查找匹配并将先前替换插入输入缓冲区。如果新的替换基本相同,但在末尾附加了一个数字,那么这将特别有用。然而,我的问题是不知道如何从(比如)以前匹配的映射->替换,而是从查找匹配并将以前的替换插入输入缓冲区。如果新的替换项基本相同,但在末尾附加了一个数字,则这将特别有用。