2017-04-25 107 views
2

我有一个字符串消息,以显示包含特殊字符,但它不打印所有。例如,如果我给喜欢“在P &一个公司做的工作”的消息。 它只打印“The P”。编码特殊字符在Java中

public void setOutageMsg(String outageMsg) { 
     //outage msg issue 
     if(outageMsg==null){ 
      this.outageMsg = outageMsg; 
     } 
     else{ 
      outageMsg=outageMsg.replaceAll("&","&").replaceAll("&","%26"); 
      this.outageMsg = outageMsg; 
     } 
    } 

同样,我需要为所有的特殊字符有一个单一的代码。

+1

东西你打算怎么打印这条消息?你能否提供你用来打印信息的代码? – Samuel

+0

你是通过网页提供的吗?如果是这样,你必须处理'&'字符_before_这个方法,而不是它。 –

+0

可以编辑你的代码与outageMsg值 –

回答

-1

试试这个,它可以帮助你

outageMsg=outageMsg.replaceAll("&","&").replaceAll("&","\u0026"); 

outageMsg=outageMsg.replaceAll("&(?!amp;)","&").replaceAll("&","\u0026"); 
+0

感谢您的建议。 '&'的代码有效。现在我需要对包含“%*#@()!”的所有特殊字符进行编码并且不想单独编码每个角色。任何建议? –

+0

答案是对的,为什么我被拒绝投票? 任何方式的字符串可以拥有所有的特殊字符,或者您需要更换为寻找“%*#@()!”只要 ? –

+0

字符串可以包含所有特殊字符。 –

-1

当你说 “不打印所有” 你可以写沿着这些路线

public void setOutageMsg(String outageMsg) { 
      //outage msg issue 
      if(outageMsg==null){ 
       this.outageMsg = outageMsg; 
      } 
      else{ 
       this.outageMsg = getFormattedString(outageMsg); 
      } 
     } 

    private String getFormattedString(String outageMsg){ 
      outageMsg.replaceAll("&","&"); 
      outageMsg.replaceAll("a","b"); 
      //... 
      return outageMsg; 
     }