2017-08-01 70 views
1

每次有名字中帶有「&」符號的藝術家出現時,我會在我的標籤「R3HAB VINAI」而不是「R3HAB & VINAI」上獲得整個字符串,因爲它是對最終用戶更有用。奇怪的是,「&」符號顯示在曲目名稱中很好。也許有人可以告訴我我做錯了什麼。從user.getRecentTracks藝術家缺少字符串中的字符

last.fm JSON API數據

{ 
recenttracks:{ 
    track:[ 
     { 
      artist:{ 
       #text:"R3HAB & VINAI", 
       mbid:"eb0fbe2c-6eb7-40bc-900b-3e056c158125" 
      }, 
      name:"HOW WE PARTY", 
      streamable:"0", 
      mbid:"b410da12-f308-4e2f-af88-19c69312e450", 
      album:{ 
       #text:"", 
       mbid:"" 
      }, 
      url:"https://www.last.fm/music/R3HAB+&+VINAI/_/HOW+WE+PARTY", 
      image:[ 
       { 
        #text:"", 
        size:"small" 
       }, 
       { 
        #text:"", 
        size:"medium" 
       }, 
       { 
        #text:"", 
        size:"large" 
       }, 
       { 
        #text:"", 
        size:"extralarge" 
       } 
      ], 
      @attr:{ 
       nowplaying:"true" 
      } 
     }, 
     { 
      artist:{ 
       #text:"Alan Walker", 
       mbid:"" 
      }, 
      name:"Sing me to Sleep", 
      streamable:"0", 
      mbid:"", 
      album:{ 
       #text:"", 
       mbid:"" 
      }, 
      url:"https://www.last.fm/music/Alan+Walker/_/Sing+me+to+Sleep", 
      image:[ 
       { 
        #text:"", 
        size:"small" 
       }, 
       { 
        #text:"", 
        size:"medium" 
       }, 
       { 
        #text:"", 
        size:"large" 
       }, 
       { 
        #text:"", 
        size:"extralarge" 
       } 
      ], 
      date:{ 
       uts:"1501613749", 
       #text:"01 Aug 2017, 18:55" 
      } 
     } 
    ], 
    @attr:{ 
     user:"SomeName", 
     page:"1", 
     perPage:"1", 
     totalPages:"8676", 
     total:"8676" 
    } 
} 
} 

C#類上市

public class Rootobject 
    { 
     public Recenttracks recenttracks { get; set; } 
    } 

    public class Recenttracks 
    { 
     public Track[] track { get; set; } 
     public Attr attr { get; set; } 
    } 

    public class Attr 
    { 
     public string user { get; set; } 
     public string page { get; set; } 
     public string perPage { get; set; } 
     public string totalPages { get; set; } 
     public string total { get; set; } 
    } 

    public class Track 
    { 
     public Artist artist { get; set; } 
     public string name { get; set; } 
     public string streamable { get; set; } 
     public string mbid { get; set; } 
     public Album album { get; set; } 
     public string url { get; set; } 
     public Image[] image { get; set; } 
     public Attr1 attr { get; set; } 
     public Date date { get; set; } 
    } 

    public class Artist 
    { 
     [JsonProperty("#text")] 
     public string text { get; set; } 
     public string mbid { get; set; } 
    } 

    public class Album 
    { 
     public string text { get; set; } 
     public string mbid { get; set; } 
    } 

    public class Attr1 
    { 
     public string nowplaying { get; set; } 
    } 

    public class Date 
    { 
     public string uts { get; set; } 
     public string text { get; set; } 
    } 

    public class Image 
    { 
     public string text { get; set; } 
     public string size { get; set; } 
    } 
+0

WHE你是否顯示這些標籤?在網頁上?的WinForms?兩者都需要轉義,但以不同的方式 –

+0

像WinForm標籤一樣?我相信你需要將'&'加倍。所以用'&&'替換'&'。 https://stackoverflow.com/questions/4325094/enter-symbol-into-a-text-label-in-windows-forms – TyCobb

+0

取決於你如何顯示字符串。我們需要知道它是一個winform,xml,html等,根據你的情況'&'的解釋是不同的。 –

回答

4

您很可能需要轉義符號。

  • 如果你使用Windows窗體,並在標籤顯示出來,可以在技術上做到不逃避的符號,在標籤上的UseMnemonic特性切換到false
  • 如果您使用的是一個標籤它可以與TextFormatFlag做,如果你不想逃避它
  • 可以躲開這個角色,通過使用&&
  • 任何其他如果你正在展示它在網絡上,你會需要它使用HttpUtility.HtmlEncode()或全部切換到&&
  • 如果你喜歡另一種方式來對其進行編碼,可以使用WebUtility.HtmlEncode()不具有相關性,以逃脫System.Web
+1

想你的意思''&;) – TyCobb

+0

我做到了,謝謝你笑 –

0

當顯示到你需要逃跑的符號來顯示它一個WinForm。您可以用&&替換它的所有匹配項。

之前設置你的藝術家,對字符串進行這種含它:

artist = artist.Replace("&", "&&");

2

默認情況下,連字符(&)被解釋爲「下劃線後面的字符,並使其成爲鍵盤快捷鍵。」 (當然做顯示的符號。)所以,你有兩個選擇:要麼

  • 設置標籤的UseMnemonic屬性false,告訴它不要試圖解釋任何&符號,或

  • 用兩個「&」符號替換每個「&」符號,這是一個特殊的序列,意思是「只留下這個&符號」。 (當然只顯示一個符號)。