2016-07-06 8 views
1

私は文字列パッケージからToUpperとToLowerについて知っていますが、明らかにここでは役に立ちません。組み込みの関数はありますか、自分で書き込む必要はありますか?文字列の各文字の大文字と小文字を逆にするにはどうすればよいですか?

+2

使用すると、1つを自分で書くなきゃかなり確信して。基本的な考え方はかなり簡単です。大文字の場合はASCII値を、小文字の場合は26を引きます。もちろんASCII以外の文字がない限り、 – evanmcdonnal

+1

があります。それはあなたが扱うことが期待できるはずです: "Привіт、Світ!"そのように動作するつもりはありません – JimB

答えて

9

あなたは1を自分で書く必要がありますが、ビルディングブロックは標準ライブラリに既にある:

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

関連する問題