2014-05-19 3 views
1

J'ai un HTMLEditor et j'ai tapé "Mon texte simple".comment obtenir Seulement le texte de Javafx2 HTMLEditor

@FXML 
public HTMLEditor htmlEditor; 

quand dire

htmlEditor.getHtmlText(); 

ce retour

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

Mais voulez texte sans balise html à savoir

My Simple Text 

how can i do it? 
+0

Utilisez TextArea ... –

+0

@ UlukBiy En fait c'est une exigence gui Mais sur Backend je n'ai besoin que d'une simple chaîne de caractères, donc je ne peux pas utiliser TextArea. –

Répondre

1

Vous devez supprimer toutes les balises HTML de votre Html Texte vous obtenir de ce HTMLEdi tor.

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()); 

    } 

} 

Patrick

+0

@Patrick ... Fondamentalement, l'utilisateur peut taper n'importe quoi. Donc ce n'est pas une bonne idée. –

+0

@javababa vous avez donc besoin du texte brut, que l'utilisateur tape dans l'éditeur? – Patrick

-1

Il est vieux fil, mais pour obtenir que le texte tapé utilisateur que vous devez utiliser la méthode getInnerText (FrameId) sur WebPage, par exemple:

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

Ce sujet ne concerne pas une page Web, il s'agit du HTMLEditor – RyanM

1

Après avoir appliqué getHtmlText() sur votre htmleditor passer la chaîne de résultat code html à la méthode suivante:

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; 
} 
Questions connexes