2014-05-21 72 views
0

我要抓住這個例外,我想在做這裏的catch塊一些treatement的代碼:測試的十六進制數值

try { 
root.setText(page.getText(field.getLine() + repetition, 
          field.getColumn(), 
          field.getLength())); 
    } catch (org.jdom2.IllegalDataException e) { 
// ignore: some lines can be empty and cannot 
// be a valid XML character so we skip them 

String invalidStr = page.getText(field.getLine() + repetition, field.getColumn(),field.getLength()); 

    } 

下面是當我使用e.printStackTrace印刷錯誤();方法:

org.jdom2.IllegalDataException: The data " 
             " is not legal for a JDOM character content: 0x000c is not a legal XML character. 
at org.jdom2.Text.setText(Text.java:182) 

因此如何使測試上的字符0x000c值:

String invalidStr = page.getText(field.getLine() + repetition, field.getColumn(),field.getLength()); 
    if (invalidStr.equals(???)) { 
    } 

預先感謝您

+0

這是否對你的作品(invalidStr.indexOf(0x000C)? – Mani

回答

1
if (invalidStr.indexOf(0x000C) >= 0) ... 

或者

if (invalidStr.indexOf('\u000C') >= 0) ... 

或者

if (invalidStr.contains("\u000C")) ... 

(使用Unicode escape

+0

感謝您的鏈接。現在有道理。我由於兩個原因而感到困惑。 1 OP的字符串包含十六進制字符(通常它會轉換爲字符)2. OP沒有長時間接受您的解決方案:) – Mani

1

使用String對象的 「的indexOf」 方法:

String invalidStr = page.getText(field.getLine() + repetition, field.getColumn(),field.getLength()); 
    if (invalidStr.indexOf((char)0x000C) >= 0) { 
    } 
+1

沒有'String.contains(char)'方法。 – Boann

+0

沒錯。謝謝:indexOf方法可以做到這一點 –