2015-02-22 23 views
5

Tôi đang cố gắng tạo một chương trình lưu trữ chuỗi trong một biến được gọi là input.Kiểm tra xem ký tự có thấp hơnCase hoặc upperCase

Với biến này input, sau đó tôi cố gắng chuyển đổi nó thành một mảng, và sau đó thử nghiệm với vòng lặp for cho dù mỗi ký tự trong mảng là lowerCase hay không. Làm thế nào tôi có thể đạt được điều này?

Sau đây là cách nay tôi đã nhận:

var input = "The quick BroWn fOX jumpS Over tHe lazY DOg" 

var inputArray = Array(input) 

for character in inputArray { 
    /* 

    if character is lower case { 

     make it uppercase 

    } else { 

     make it lowercase 

    } 

    */ 
} 
+0

Tôi đã đóng vai trò trùng lặp vì ý định thực sự của bạn dường như o là * các trường hợp hoán đổi * (và trong mọi trường hợp, bạn có thể sử dụng các phương thức từ các câu trả lời cho câu hỏi đó). - Xin vui lòng cho tôi biết nếu tôi đã hoàn toàn sai, sau đó tôi sẽ mở lại câu hỏi. –

+0

Đây không phải là bản sao. Tôi đã viết ở trên rằng tôi đã kiểm tra các bài đăng khác và không thể tìm thấy câu hỏi. Tôi không muốn một câu trả lời trong đó sử dụng một chức năng. Vui lòng mở lại câu hỏi. @MartinR – Sachin

+4

Có lẽ bạn có thể giải thích tại sao các câu trả lời khác nhau cho [Swap string case - swift] (http://stackoverflow.com/questions/28255709/swap-string-case-swift) không hoạt động cho bạn. Bạn không cần phải sử dụng một hàm, bạn chỉ có thể sử dụng mã bên trong các hàm đó. - Tôi vẫn nghĩ đây là một bản sao, nhưng tôi đã mở lại câu hỏi để ai đó có thể nhảy vào. –

Trả lời

4
var input = "The quick BroWn fOX jumpS Over tHe lazY DOg" 

var inputArray = Array(input) 

for character in inputArray { 

var strLower = "[a-z]"; 

var strChar = NSString(format: "%c",character) 
let strTest = NSPredicate(format:"SELF MATCHES %@", strLower); 
if strTest .evaluateWithObject(strChar) 
{ 
    // lower character 
} 
else 
{ 
    // upper character 
} 
} 
-3

Bạn có thể kiểm tra giá trị ascii của mỗi nhân vật vì chữ hoa và chữ thường là giá trị khác nhau từ phía trên là 65-90 và thấp hơn là 97-122

+2

Còn về "Ü", "Ă", "ć", "Œ" hoặc "Α" (vị trí cuối cùng là một thủ đô Hy Lạp Alpha)? –

+0

Cũng từ mã của mình nó không giống như anh ta sẽ gặp phải chúng. – Joe

+0

Joe, bạn có thể cho tôi biết cách tôi có thể sử dụng mã này trong mã của tôi không? – Sachin

0

Bạn nên sử dụng regexp: grep [AZ] so với grep [az].

+0

Xem nhận xét của tôi về câu trả lời của Joe. –

+0

hợp lệ, tôi đảm nhận các cuộc đàm phán OP về bảng chữ cái Latin mặc định – aaaaaa

+0

Tôi hỏi về bảng chữ cái Latin mặc định. Nhưng bạn có thể cho tôi biết làm thế nào tôi có thể sử dụng điều này trong mã của tôi? – Sachin

3

Swift 3

static func isLowercase(string: String) -> Bool { 
    let set = CharacterSet.lowercaseLetters 

    if let scala = UnicodeScalar(string) { 
     return set.contains(scala) 
    } else { 
     return false 
    } 
    } 
0

Swift 4:

var input = "The quick BroWn fOX jumpS Over tHe lazY DOg" 
let uppers = CharacterSet.uppercaseLetters 
let lowers = CharacterSet.lowercaseLetters 
input.unicodeScalars.forEach { 
    if uppers.contains($0) { 
     print("upper: \($0)") 
    } else if lowers.contains($0) { 
     print("lower: \($0)") 
    } 
} 
0

Dưới đây là một câu trả lời bằng văn bản về Swift 4 mà làm việc thời tiết String đầu vào là một hoặc nhiều chữ cái:

extension String { 
     static func isLowercase(string: String) -> Bool { 
      let set = CharacterSet.lowercaseLetters 
      for character in string { 
       if let scala = UnicodeScalar(String(character)) { 
        if !set.contains(scala) { 
         return false 
        } 
       } 
      } 
      return true 
     } 

     static func isUppercase(string: String) -> Bool { 
      let set = CharacterSet.uppercaseLetters 
      for character in string { 
       if let scala = UnicodeScalar(String(character)) { 
        if !set.contains(scala) { 
         return false 
        } 
       } 
      } 
      return true 
     } 
    } 
Các vấn đề liên quan