2016-07-06 129 views
1

我知道ToUpper和ToLower來自字符串包,但顯然他們在這裏沒有幫助。是否有內置函數,還是必須自己寫一個函數?如何反轉字符串中每個字母的大小寫?

+2

敢肯定你得寫一個自己。這很簡單,基本的想法是;得到ASCII值,如果它的大寫字母減去26,如果小寫字母加上相同的值。 – evanmcdonnal

+1

除非你有非ASCII字符。你應該能夠處理這個問題:「Привіт,Світ!」不會那樣工作 – JimB

回答

9

你需要自己寫一個,但積木已經在標準庫:

func swapCase(s string) string { 
    return strings.Map(func(r rune) rune { 
     switch { 
     case unicode.IsLower(r): 
      return unicode.ToUpper(r) 
     case unicode.IsUpper(r): 
      return unicode.ToLower(r) 
     } 
     return r 
    }, s) 
} 
+0

該死的@JimB,你正趕上我,停下來! – OneOfOne

+0

漂亮,優雅的解決方案。 – icza

+0

看起來真的很優雅!謝謝。這需要我一些時間來包裹我的頭。 – Arthmost

相關問題