簡體   English   中英

解析Java字符串特殊字符錯誤

[英]Parsing Java String Special Character Error

我想解析一個字符串以獲取屬性的值。例如,我具有以下字符串: calling_number = + 385317KFWVM,call_direction = I,conversation_duration = 29,

每個屬性及其值用逗號分隔。我在名為MessageBean的類中聲明了每個屬性的名稱和類型。

public static void main(String[] args){

 try {
        MessageBean attributes_bean =  MessageBean.parse("calling_number=+385317KFWVM, call_direction=I, conversation_duration=29,");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


public class MessageBean {

    private String calling_number;
    private String call_direction;
    private int conversation_duration;

    public static MessageBean parse(String line) throws UnsupportedEncodingException {
        MessageBean bean = new MessageBean();
        line = URLDecoder.decode(line, "utf-8");
        bean.setCalling_number(MessageBean.getParameter(line, "calling_number"));
        bean.setCall_direction(MessageBean.getParameter(line, "call_direction"));
        bean.setConversation_duration(Integer.parseInt(MessageBean.getParameter(line, "conversation_duration")));

    return bean;
    }

    private static String getParameter(String line, String name) {
        String value = "";

        Pattern p = Pattern.compile(name + "=([^,]*),");
        Matcher m = p.matcher(line);
        if (m.find()) {
            value = m.group(1);
        }

       return value;
    }

}

我希望我的結果是+ 385317KFWVM,我29歲

相反,我得到385317KFWVM,我29歲,這意味着我錯過了+號。我知道我的正則表達式有問題。我已經嘗試了\\ +之類的所有方法,但仍然沒有得到正確的結果。有幫助嗎?

當您運行URLDecoder.decode(line,“ utf-8”)時,將從字符串中刪除+。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM