2014-05-19 4 views
1

나는 HTMLEditor를 가지고 있고 "My Simple Text"를 타이프했다.어떻게 얻는가 Javafx2 HTMLEditor의 텍스트

@FXML 
public HTMLEditor htmlEditor; 

htmlEditor.getHtmlText(); 

당신은 당신의 HTML 텍스트에서 모든 HTML 태그를 제거해야합니다

<html><head></head><body contenteditable="true"><p style="text-align: left;"><font face="'Segoe UI'">My Simple Text</font></p></body></html> 

그러나

My Simple Text 

how can i do it? 
+0

를 사용하여 텍스트 영역 ... –

+0

@ UlukBiy 실제로 이것은 gui 요구 사항입니다.하지만 백엔드에서는 TextArea를 사용할 수 없기 때문에 간단한 텍스트 문자열 만 필요합니다. –

답변

1

즉, HTML 태그가없는 텍스트를 원하는이 반환 말할 때 이 HTMLEdi에서 가져 오기 토르.

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.layout.VBox; 
import javafx.scene.web.HTMLEditor; 
import javafx.stage.Stage; 


public class HTMLEditorDemo extends Application { 

    @Override 
    public void start(Stage primaryStage) { 

     HTMLEditor editor = new HTMLEditor(); 
     Button b = new Button("Show Text"); 
     b.setOnAction((ActionEvent e) -> { 
      String htmlText = editor.getHtmlText(); 
      stripHTMLTags(htmlText); 

     }); 

     VBox vBox = new VBox(b, editor); 
     Scene scene = new Scene(vBox, 800, 600); 


     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

    private void stripHTMLTags(String htmlText) { 

     Pattern pattern = Pattern.compile("<[^>]*>"); 
     Matcher matcher = pattern.matcher(htmlText); 
     final StringBuffer sb = new StringBuffer(htmlText.length()); 
     while(matcher.find()) { 
      matcher.appendReplacement(sb, " "); 
     } 
     matcher.appendTail(sb); 
     System.out.println(sb.toString().trim()); 

    } 

} 

패트릭

+0

@ Patrick ... 기본적으로 사용자는 아무 것도 입력 할 수 없습니다. 그래서 이것은 좋은 생각이 아닙니다. –

+0

@ javababa 그래서 사용자가 편집기에 입력하는 일반 텍스트가 필요합니까? – Patrick

-1

그것은하지만, 예를 들어, 당신이 웹 페이지에 방법 getInnerText (되는 frameID)를 사용하기 만하면 사용자가 입력 한 텍스트, 얻을 오래된 스레드 :

webPage.getInnerText(webPage.getMainFrame()); 
+0

이 스레드는 HTMLEditor에 관한 웹 페이지가 아닙니다. – RyanM

1

당신의 HTML 편집기에 getHtmlText()을 적용한 후 다음과 같은 방법으로 HTML 코드의 결과 문자열을 전달 :

public static String getText(String htmlText) { 

    String result = ""; 

    Pattern pattern = Pattern.compile("<[^>]*>"); 
    Matcher matcher = pattern.matcher(htmlText); 
    final StringBuffer text = new StringBuffer(htmlText.length()); 

    while (matcher.find()) { 
    matcher.appendReplacement(
     text, 
     " "); 
    } 

    matcher.appendTail(text); 

    result = text.toString().trim(); 

    return result; 
}