Я пишу очень маленький редактор SQL, в основном для новинок. Теперь я могу выполнить все утверждения, просто разделив весь текст на точки с запятой и запустив одно утверждение за другим.Извлечение ближайшего предложения из строки
Однако я хочу реализовать функцию, в которой я запускаю только оператор, ближайший к курсору, но я не понимаю, как это сделать. Я смотрел на BreakIterator
, который кажется полезным, но на самом деле это не помогает мне получить требуемое утверждение.
Это те случаи, которые мне нужно поддерживать: Курсор расположен на |
SELECT * FROM something;|
Курсор помещается после запятойSELECT * FROM so|mething;
Курсор помещается в отчетеSELECT * FROM something\nLEFT |JOIN foo USING (bar);
заявление, охватывающих несколько строк, опять-таки с помощью курсора помещенного как после запятой, или в заявлении.
Любые идеи для простого решения для этого?
Вы используете апплет или некоторые TextEditor для приема пользовательского ввода http://stackoverflow.com/questions/4565836/how-to-find-cursor-position-in-a-jtextarea Эта ссылка позволяет вам узнать позицию курсора, и вы можете получить следующий фрагмент запроса с этой точки, –
Нет, я пишу в модифицированный JTextArea. Я могу получить позицию курсора, используя getCaretPosition(), но я не уверен, как я буду охватывать все случаи, о которых я упоминал в чистом виде. – Istarnion