Java 将rtf格式转换为纯文本

Java 将rtf格式转换为纯文本,java,c#,android,wpf,Java,C#,Android,Wpf,我从API(WPF,C#)收到了RTF格式的文本。我想将其转换为纯文本并显示在Textview中。我尝试了所有可能的方法,但没有成功 rtf文本: 0x7B5C727466315C616E73695C616E73696E7369637067313235325C6465666630C64656C616E6773130333B5C666F6E74626C7B5C666305C6666E69C6C6663686172736657430204D69637326F736F667053616E7320556

我从API(WPF,C#)收到了RTF格式的文本。我想将其转换为纯文本并显示在Textview中。我尝试了所有可能的方法,但没有成功

rtf文本: 0x7B5C727466315C616E73695C616E73696E7369637067313235325C6465666630C64656C616E6773130333B5C666F6E74626C7B5C666305C6666E69C6C6663686172736657430204D69637326F736F667053616E732055663B7D7D5C766965776E64345C7563C7C706172645C665656565656E643535C7563637C7C7C70617676767676656565656565656C6767663636363636376767676767676767676767676767676767676767676767676

在API端,我们可以将其转换为以下代码。但我想把它转换到android端

ASCIIEncoding ascii = new ASCIIEncoding();
    Archonix.Controls.RichTextBox rtbnote;
                                byte[] note;
                                rtbnote = new Controls.RichTextBox();
                                note = (dr["AlertNote"]) as byte[];
                                rtbnote.Rtf = ascii.GetString(note);
                                string tempRtfText = rtbnote.Rtf;
                                string tempRegularText = rtbnote.Text;
                                objAlertList.AlertNote = tempRegularText;

这不是RTF。这是字节的十六进制编码

字节是文本(RTF是文本),因此必须首先解码十六进制字符串:

public static void main(String[] args) {
    String hex = "0x7B5C727466315C616E73695C616E7369637067313235325C6465" +
                 "6666305C6465666C616E67313033337B5C666F6E7474626C7B5C66" +
                 "305C666E696C5C666368617273657430204D6963726F736F667420" +
                 "53616E732053657269663B7D7D5C766965776B696E64345C756331" +
                 "5C706172645C66305C667331382068656C6C6F5C70617220207D";
    byte[] bytes = hexStringToByteArray(hex.substring(2));
    String text = new String(bytes, StandardCharsets.US_ASCII);
    System.out.println(text);
}
public static byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
                             + Character.digit(s.charAt(i+1), 16));
    }
    return data;
}
这就是RTF


至于解析RTF和提取文本,请参阅或进行web搜索。

您有什么代码?是的,我尝试了,但在API方面成功了。但根据我们的标准,我们无法在API中使用控件。请检查我的编辑