★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9812156.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

在NSString中提供了3种字符串大小写转换方式:
1. 转换字符串大小写
2. 转换字符串大小写,并实现本地化
3. 转换字符串大小写,并设置语言环境。

一、 转换字符串大小写
如果只是想单纯的将字符串进行大小写转换,可以使用NSString中的3个属性实现,
Lowercased-将字母转换为小写
Uppercased-将字母转换为大写
Capitalized-将首字母大写

(1.1)lowercased属性是将字符串中的字母全部转换为小写字母.
其语法形式:var lowercased: String { get }

 1 var str1 = String("STRENGTHEN")
 2 var str2 = NSString(string:"STRENGTHEN")
 3 //String只可使用lowercased()
 4 //只返回全部小写,不修改原字符串
 5 print(str1.lowercased())
 6 //Print: "strengthen"
 7 //String只能用lowercased()
 8 //str1.lowercased运行报错:expression resolves to an unused function
 9 
10 //NSString只可使用.lowercased
11 //只返回全部小写,不修改原字符串
12 print(str2.lowercased)
13 //Print: "strengthen"
14 //NSString只能用lowercased
15 //.lowercased()运行报错:cannot invoke 'lowercased' with no arguments

(1.2)uppercased属性是将字符串中的字母全部转换为大写字母。
其语法形式:var uppercased: String { get }

 1 var str1 = String("strengthen")
 2 var str2 = NSString(string:"strengthen")
 3 //String只可使用uppercased()
 4 //只返回全部大写,不修改原字符串
 5 print(str1.uppercased())
 6 //Print: "STRENGTHEN"
 7 //String只能用uppercased()
 8 //str1.uppercased运行报错:expression resolves to an unused function
 9 
10 //NSString只可使用.uppercased
11 //只返回全部大写,不修改原字符串
12 print(str2.uppercased)
13 //Print: "STRENGTHEN"
14 //NSString只能用uppercased
15 //.uppercased()运行报错:cannot invoke 'uppercased' with no arguments

(1.3)capitalized属性实现的功能是将字符串中的首字母大写.
其语法形式:var capitalized: String { get }

 1 var str1 = String("strengthen")
 2 var str2 = NSString(string:"strengthen")
 3 //String和NSString都只可使用capitalized
 4 //只返回首字母大写,不修改原字符串
 5 print(str1.capitalized)
 6 //Print: "Strengthen"
 7 //只返回首字母大写,不修改原字符串
 8 print(str2.capitalized)
 9 //Print: "Strengthen"
10 
11 //String和NSString都使用capitalized()报错
12 //str1.capitalized()运行报错:cannot invoke 'capitalized' with no arguments
13 //str2.capitalized()运行报错:cannot invoke 'capitalized' with no arguments

二、转换字符串大小写,实现本地化
如果不是单纯的将字符串进行大小写转换,还要实现本地化,此时需要使用到NSString的3个属性,
localizedLowercase-全部字母转换为小写,并实现本地化。
localizedUppercase-部字母转换为大写,并实现本地化。
localizedCapitalized-首字母转换为首字母大写,并实现本地化。

(2.1)localizedLowercase属性可以将字符串的的全部字母转换为小写,并实现本地化。

其语法形式:var localizedLowercase: String { get }

 1 var str1 = String("STRENGTHEN")
 2 var str2 = NSString(string:"STRENGTHEN")
 3 //String和NSString都只可使用localizedLowercase
 4 //只返回全部小写,并实现本地化,不修改原字符串
 5 print(str1.localizedLowercase)
 6 //Print: "strengthen"
 7 //只返回全部小写,并实现本地化,不修改原字符串
 8 print(str2.localizedLowercase)
 9 //Print: "strengthen"
10 
11 //String和NSString都使用localizedLowercase()报错
12 //str1.localizedLowercase()运行报错:cannot call value of non-function type 'String'
13 //str2.localizedLowercase()运行报错:cannot call value of non-function type 'String'

(2.2)localizedUppercase属性可以将字符串的的全部字母转换为大写,并实现本地化。

其语法形式:var localizedUppercase: String { get }

 1 var str1 = String("strengthen")
 2 var str2 = NSString(string:"strengthen")
 3 //String和NSString都只可使用localizedUppercase
 4 //只返回全部大写,并实现本地化,不修改原字符串
 5 print(str1.localizedUppercase)
 6 //Print: "STRENGTHEN"
 7 //只返回全部小写,并实现本地化,不修改原字符串t
 8 print(str2.localizedUppercase)
 9 //Print: "STRENGTHEN"
10 
11 //String和NSString都使用localizedUppercase()报错
12 //str1.localizedUppercase()运行报错:cannot call value of non-function type 'String'
13 //str2.localizedUppercase()运行报错:cannot call value of non-function type 'String'

(2.3)localizedCapitalized属性可以将字符串的首字母转换为大写,并实现本地化。

其语法形式:var localizedCapitalized: String { get }

 1 var str1 = String("strengthen")
 2 var str2 = NSString(string:"strengthen")
 3 //String和NSString都只可使用localizedCapitalized
 4 //只返回首字母大写,并实现本地化,不修改原字符串
 5 print(str1.localizedCapitalized)
 6 //Print: "Strengthen"
 7 //只返回首字母大写,并实现本地化,不修改原字符串
 8 print(str2.localizedCapitalized)
 9 //Print: "Strengthen"
10 
11 //String和NSString都使用localizedCapitalized()报错
12 //str1.localizedCapitalized()运行报错:cannot call value of non-function type 'String'
13 //str2.localizedCapitalized()运行报错:cannot call value of non-function type 'String'

三、转换字符串大小写,并设置语言环境
在NSString中除了上文中提到的转换字符串大小写的属性外,还存在3个方法可以实现字符串的大小写转换,并将大小写的改变应用到本地化之后的其他语言版本中。
lowercased(with:)- 全部字母转换为小写,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中.
uppercased(with:)- 全部字母转换为大写,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中.
capitalized(with:)- 首字母转换为大小,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中.

(3.1)lowercased(with:)方法是将字符串中的全部字母转换为小写,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
其语法形式:func lowercased(with locale: Locale?) -> String
其中,locale用来设置语言环境。

1 var str1 = String("STRENGTHEN")
2 var str2 = NSString(string:"STRENGTHEN")
3 var l=Locale.current
4 //全部字母转换为小写
5 //并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
6 print(str1.lowercased(with: l)) 
7 print(str2.lowercased(with: l)) 
8 //Print: "strengthen"

(3.2)uppercased(with:)方法是将字符串中的全部字母转换为大写,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
其语法形式:func uppercased(with locale: Locale?) -> String
其中,locale用来设置语言环境。

1 var str1 = String("strengthen")
2 var str2 = NSString(string:"strengthen")
3 var l=Locale.current
4 //全部字母转换为大写
5 //并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
6 print(str1.uppercased(with: l)) 
7 print(str2.uppercased(with: l)) 
8 //Print: "STRENGTHEN"

(3.3)capitalized(with:)方法是将字符串中的首字母转换为大写,并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
其语法形式:func uppercased(with locale: Locale?) -> String
其中,locale用来设置语言环境。

1 var str1 = String("strengthen")
2 var str2 = NSString(string:"strengthen")
3 var l=Locale.current
4 //首字母转换为大写
5 //并且可以通过设置的语言环境将大小写的改变应用到本地化之后的其他语言版本中。
6 print(str1.capitalized(with: l)) 
7 print(str2.capitalized(with: l)) 
8 //Print: "Strengthen"