2015-06-27 15 views
0

給定一個編碼以字節爲單位給出的最大尺寸旋蓋的字符串,有沒有預想的方式來「上限」根據字節一些給定的最大大小的字符串。插圖:根據在Python

>>> some_string = 'abc' 
>>> size_limit = 2 
>>> encoding = 'utf-8' 
>>> capped_string = cap_to_size(some_string, size_limit, encoding) 
>>> capped_string 
'ab' 

也就是說,功能cap_to_size(這麼說)切掉最右邊的字符字符串中,直到結果字符串具有給定大小。如果給定的字符串比大小限制較小已經沒有任何反應並返回原始字符串。

在多字節字符的情況下,它們應該以它們的整體被丟棄,如果它們的字節中的一個超過該大小限制。

+2

應該發生什麼? –

+0

好問題,因爲我處理的設定目前一個ASCII字符compatiable沒想到這一點。但通常,多字節字符應以它們的整體丟棄,如果它們的字節中的一個超過該大小限制。我會更新這個問題。 – seble

回答

1

關閉我的頭頂部(不尚好測試):如果在一個多字節字符的中間出現帽

def cap_to_size(some_string, size_limit, encoding): 
    result = "" 
    for char in some_string: 
     size_limit -= len(char.encode(encoding)) 
     if size_limit >= 0: 
      result += char 
     else: 
      return result