2016-07-30 5 views
0

Ich verwende LanguageTool zusammen mit Eclipse. Auf die API kann über folgenden Link zugegriffen werden: Click here. Ich bin in der Lage, die Textausgabe davon zu erhalten, die zeigt, dass bestimmte Spalten falsch geschriebene Wörter haben, aber ich bin nicht in der Lage, die Ausgabe zu erhalten, die die korrigierte Zeichenkettenversion der falsch geschriebenen Zeichenkette ist, die als die Eingabe gegeben wird. Hier ist mein Code:Wie bekomme ich den Suggested Sentence in einer Zeichenfolge als Ausgabe in LanguageTool?

JLanguageTool langTool = new JLanguageTool(new BritishEnglish()); 
List<RuleMatch> matches = langTool.check("A sentence with a error in the Hitchhiker's Guide tot he Galaxy"); 

for (RuleMatch match : matches) { 
    System.out.println("Potential error at line " + 
     match.getLine() + ", column " + 
     match.getColumn() + ": " + match.getMessage()); 
    System.out.println("Suggested correction: " + 
     match.getSuggestedReplacements()); 
} 

Der Ausgang erhalten wird:

Potential error at line 0, column 17: Use <suggestion>an</suggestion> instead of 'a' if the following word starts with a vowel sound, e.g. 'an article', 'an hour' 
Suggested correction: [an] 
Potential error at line 0, column 32: Possible spelling mistake found 
Suggested correction: [Hitch-hiker] 
Potential error at line 0, column 51: Did you mean <suggestion>to the</suggestion>? 
Suggested correction: [to the] 

ich die Ausgabe möchte die korrigierte Version der Eingabezeichenfolge sein, wie:

A sentence with an error in the Hitchhiker's Guide to the Galaxy 

Wie kann ich das ausführen?

Antwort

1

Beispiel bei der Verwendung von getFromPos(), getToPos() Methoden:

private static final String TEST_SENTENCE = "A sentence with a error in the Hitchhiker's Guide tot he Galaxy"; 

public static void main(String[] args) throws Exception { 

    StringBuffer correctSentence = new StringBuffer(TEST_SENTENCE); 

    JLanguageTool langTool = new JLanguageTool(new BritishEnglish()); 
    List<RuleMatch> matches = langTool.check(TEST_SENTENCE); 

    int offset = 0; 
    for (RuleMatch match : matches) { 

     correctSentence.replace(match.getFromPos() - offset, match.getToPos() - offset, match.getSuggestedReplacements().get(0)); 
     offset += (match.getToPos() - match.getFromPos() - match.getSuggestedReplacements().get(0).length()); 

    } 

    System.out.println(correctSentence.toString()); 
} 
+0

Danke eine Million. – Ravichandra

0

Verwenden Sie einen der match.getSuggestedReplacements() und ersetzen Sie die ursprüngliche Eingabezeichenfolge durch die von match.getFromPos() bis match.getToPos(). Welcher der zu verwendenden Vorschläge (falls es mehrere gibt) kann nicht automatisch ermittelt werden, muss der Benutzer auswählen.

+0

Hey, danke für die Informationen. Ich werde das versuchen. Also, es gibt keine direkten Aussagen, um es auszuführen, oder? Durch Stringmanipulation selbst? – Ravichandra

+0

@Ravichandra Nein, die direkte Entscheidung zur Ausführung dieser Aufgabe existiert. Sieh dir meine Antwort an. –

+0

Vielen Dank! :) – Ravichandra