2017-04-25 395 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; 
     }