2010-06-21 7 views
0

텍스트 파일에서 많은 찾기/바꾸기를 수행하는 콘솔 기반 Java/Groovy 응용 프로그램을 만들고 있습니다. 예를 들어, 프로그램에서 foo을 지난 번에 bar으로 바꾼 것을 알면 기본적으로 다음 foobar으로 바꿔야한다는 것을 알고 있어야합니다. 내 생각은 불필요하게 다시 입력 할 필요가 없도록 What would you like to rename this to? 프롬프트의 입력 필드를 미리 채우는 것이었지만 Java에서이 작업을 수행하는 쉬운 방법을 찾을 수 없습니다.Java 콘솔에서 입력을 미리 채우기

가능한가요? 그렇다면 권장되는 방법입니까?

답변

2

빈 입력이 입력 된 마지막 입력과 같다고 가정하지 않으시겠습니까? 그 사전 관리를 매우 쉽게 관리 할 수 ​​있습니다. stdin

최근 목록이있을 경우 마지막 또는 이전을 알려주는 특수 문자 조합을 제안 할 수 있습니다. .

+0

사실 이것은 현재 기본 동작입니다. 그러나 입력 필드를 미리 채우는 것이 더 많은 공간을 차지하는 것보다 효율적이라고 생각했습니다. "발견 된 Y, 이전 값은 X였습니다. 사용하려면 Enter 키를 누르십시오." –

1

이 문제에 대한 유용한 접근 방법이 많이 있습니다. 사용자가 비슷한 대체를 요청할 경우 사용자가 마지막으로 교체 한 값만 기억하거나 마지막 n 개의 교체로 캐시를 유지할 수 있습니다. 또는 이전 입력을 무시하고 필요할 때마다 사용자가 대체품을 제공하도록 할 수 있습니다. 올바른 접근 방식은 사용자가 동일한 값을 자주 바꾼 경우 등 대체 작업의 빈도에 따라 달라집니다. 문제 도메인 및 사용자에게 제공하려는 상호 작용의 종류에 따라 적절한 솔루션을 선택해야합니다.

이러한 솔루션을 구현하는 것은 간단합니다. 가장 직관적 인 방법은 교체 캐시를 간단한 텍스트 파일에 저장하고 시작 중에로드하고 종료시 캐시를 저장하는 것입니다. 대체 캐시는 파일에 직렬화되어 일반 텍스트로 작성됩니다.

+0

그러나 제 문제는 예전의 성냥 -> 대체 성의지도에서 일치 성을 찾고 입력 버퍼로 이전의 치환을 삽입하는 방법을 모르는 것입니다. 새로운 교체가 거의 같지만 끝에 추가 된 숫자가 다른 경우 특히 유용합니다. –

관련 문제