2015-11-23 56 views
1

通知我不能超過256個字符。我需要調整字符串的最大長度爲200個字符。在Swift中調整字符串的大小

我怎麼能,例如,如果我有一個210個字符的字符串,調整它的大小爲197和其餘「...」。但是,如果我有一個由100個字符組成的字符串,請不要調整它的大小,因爲它適合通知。

謝謝。

回答

0
let str = "With notifications I can't exceed more than 256 characters. I need to resize a string to be 200 characters maximum. How could I, for example if I have an string of 210 characters, resize it to 197 and the rest \"...\". But if I have one string of 100 characters, don't resize it because it fits in the notification." 

func foo(str: String, width: Int)->String { 
    let length = str.characters.count 
    if length > width { 
     let d = length - width + 3 
     let n = d < 0 ? 0 : d 
     let head = str.characters.dropLast(n) 
     return String(head) + "..." 
    } 
    return str 
} 

foo(str, width: 10) // "With no..." 
print(foo(str, width: 200)) 
/* 
With notifications I can't exceed more than 256 characters. I need to resize a string to be 200 characters maximum. How could I, for example if I have an string of 210 characters, resize it to 197 ... 
*/ 
2

我認爲你可以在字符串的末尾添加省略號。在這種情況下,如果您的字符串超過200個字符,則需要從第一個字符(索引:0)到第197個字符的子字符串。然後你將「...」連接到這個子字符串,並在你的通知中使用它。

我還有另外一種可能性:當你生成通知時,你使用come算法壓縮你的消息(我使用普通的舊的huffman),並將壓縮後的版本作爲有效載荷發送。在你的應用程序中,你膨脹了壓縮的消息並顯示它,因此實際上超過了大小限制。毫無疑問,只要壓縮版本適合通知有效載荷,就可以工作。如果你不能做到這一點,你必須事先縮短你的信息 - 無論是用上面描述的方法,然後用純文本發送出去,或者在壓縮之前制定最長的截短信息癟的版本適合在有效載荷內。

+0

讓我們像我有下一個字符串:var data =「這是一個不那麼長的字符串」。我需要它是最多10個字符,然後「...」 代碼如何在Swift中使用子字符串? –

+0

如果你有n個字符的限制,那麼你需要檢查你的輸入是否更長。如果是這樣,然後採取其前n - 3個字符(在本例中爲7),並添加「...」他們有一個10字符的字符串。 –

2

我會使用此擴展名字符串。需要注意的是,你想要什麼它不這樣做,因爲它使用Unicode省略號代替3個週期,但指定「......」作爲第二個參數會做到這一點:

extension String { 
    func ellide(length:Int, ellipsis:String = "…") -> String { 
     if characters.count > length { 
      return self[startIndex..<startIndex.advancedBy(length - ellipsis.characters.count)] + ellipsis 
     } else { 
      return self 
     } 
    } 
} 
+1

另外請注意,當您可能對消息的字節數更感興趣時,這將回答關於「字符」的問題的更多字面版本,如果處理非ASCII字符,這將成爲重要的區別。 –

相關問題