将字符串格式化为Pascal大小写

时间:2018-06-21 18:05:44

标签: swift

使用 Swift 4 ,如何使用这些规则设置字符串格式:

  • 如果单词长于3个字母,则将其首字母大写, 否则为大写

  • 包含连字符的Pascal大小写单词,如St-Michel

我在这里有初稿,但我坚持如何解决第二点。另外,目前我在不应该在结尾处添加一个空格。

var pascalCase: String {
    return self.components(separatedBy: " ")
        .map {
            if $0.count > 3 {
                return $0.uppercased()
            } else {
                return $0.lowercased().capitalizingFirstLetter()
            }
        }
        .map { return $0 + " " }
        .joined()
}

1 个答案:

答案 0 :(得分:2)

假设我对您的要求正确无误,那么可以这样做:

extension String {
    var pascalCase: String {
        return self.components(separatedBy: " ")
            .map {
                if $0.count <= 3 {
                    return $0.uppercased()
                } else {
                    if $0.index(of: "-") != nil {
                        return $0.components(separatedBy: "-").map { $0.pascalCase }.joined(separator: "-")
                    } else {
                        return $0.capitalized
                    }
                }
            }
            .joined(separator: " ")
    }
}

print("hello".pascalCase)
print("hi".pascalCase)
print("this is fun".pascalCase)
print("st-michael".pascalCase)

结果:

  

你好
  HI
  这很有趣
  圣迈克尔