[英]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.