2015-03-25 15 views
21

Có chức năng viết hoa mỗi từ trong chuỗi hoặc đây có phải là quy trình thủ công không?Cách viết hoa từng từ trong một chuỗi bằng Swift iOS

Ví dụ: "bob is tall" Và tôi muốn "Bob Is Tall"

Chắc chắn có điều gì đó và không có câu trả lời Swift IOS nào mà tôi tìm thấy có vẻ bao gồm điều này.

+0

var someString = "lol"; someString.capitalized // "Lol" – Alexander

+0

Một vài người khác đã nêu chi tiết tùy chọn này bên dưới. ;) –

Trả lời

33

Bạn đang tìm kiếm capitalizedString

Thảo luận
Một chuỗi với ký tự đầu tiên trong mỗi từ thay đổi để nó giá trị chữ hoa tương ứng và tất cả ký tự còn lại được đặt thành giá trị chữ thường tương ứng của chúng.

và/hoặc capitalizedStringWithLocale(_:)

Trả về một đại diện vốn của người nhận bằng cách sử dụng trí đã chỉ định.

Đối với chuỗi được hiển thị cho người dùng, hãy chuyển miền địa phương hiện tại ([NSLocale currentLocale]). Để sử dụng miền địa phương hệ thống, hãy chuyển nil.

+0

Tôi chưa thử viết hoaStringWithLocale vì vậy tôi sẽ chơi với nó và bình luận lại sau vài phút. –

+1

Cảm ơn. Hóa ra ví dụ nhanh trên các tài liệu của Apple đã bị nhầm lẫn và ném tôi vào một vòng lặp (theo nghĩa bóng). –

3

Có một xây dựng trong chức năng cho rằng

nameOfString.capitalizedString 

này sẽ tận dụng từng chữ của chuỗi. Để tận dụng chỉ chữ cái đầu tiên bạn có thể sử dụng:

nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString) 

Older Thread

+0

Tôi đã thử điều này, và nó đã không làm việc cho tôi. Nó dường như chỉ giới hạn từ đầu tiên. Tôi đã tìm thấy chuỗi đề xuất điều này. –

0

Dưới đây là những gì tôi nghĩ ra có vẻ như hiệu quả nhưng tôi mở cho mọi thứ tốt hơn.

func firstCharacterUpperCase(sentenceToCap:String) -> String { 

    //break it into an array by delimiting the sentence using a space 
    var breakupSentence = sentenceToCap.componentsSeparatedByString(" ") 
    var newSentence = "" 

    //Loop the array and concatinate the capitalized word into a variable. 
    for wordInSentence in breakupSentence { 
     newSentence = "\(newSentence) \(wordInSentence.capitalizedString)" 
    } 

    // send it back up. 
    return newSentence 
} 

hoặc nếu tôi muốn sử dụng như một phần mở rộng của chuỗi lớp.

extension String { 
var capitalizeEachWord:String { 
    //break it into an array by delimiting the sentence using a space 
    var breakupSentence = self.componentsSeparatedByString(" ") 
    var newSentence = "" 

    //Loop the array and concatinate the capitalized word into a variable. 
    for wordInSentence in breakupSentence { 
     newSentence = "\(newSentence) \(wordInSentence.capitalizedString)" 
    } 

    // send it back up. 
    return newSentence 
} 
} 

Một lần nữa, mọi thứ đều được chào đón.

8

Ví dụ về câu trả lời được cung cấp ở trên.

var sentenceToCap = "this is a sentence." 
println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale()) ) 

Kết quả cuối cùng là một chuỗi "This is a sentence"

12

Kể từ iOS 9 một chức năng vốn hóa cục bộ có sẵn như là chữ vốn có thể khác nhau về ngôn ngữ.

if #available(iOS 9.0, *) { 
    "istanbul".localizedCapitalizedString 
    // In Turkish: "İstanbul" 
} 
8

Đối Swift 3 nó đã được thay đổi để capitalized.

Thảo luận
tài sản này thực hiện việc lập bản đồ kinh điển (không cục bộ). Nó phù hợp cho các hoạt động lập trình yêu cầu kết quả ổn định không phụ thuộc vào ngôn ngữ hiện tại. Chuỗi được viết hoa là một chuỗi có ký tự đầu tiên trong mỗi từ được thay đổi thành giá trị chữ hoa tương ứng của nó và tất cả ký tự còn lại được đặt thành giá trị chữ thường tương ứng của chúng. Một "từ" là bất kỳ chuỗi ký tự nào được phân tách bằng dấu cách, tab hoặc các ký tự dòng (được liệt kê trong getLineStart (_: end: contentsEnd: for :)). Một số từ thông dụng phân cách dấu chấm câu không được xem xét, do đó, thuộc tính này thường có thể không tạo ra kết quả mong muốn cho các chuỗi nhiều từ. Biến đổi trường hợp không được đảm bảo đối xứng hoặc để tạo ra các chuỗi có cùng độ dài như bản gốc. Xem phần thấp hơn cho một ví dụ.

6

Swift 3:

var lowercased = "hello there" 

var stringCapitalized = lowercased.capitalized 
//prints: "Hello There" 
Các vấn đề liên quan