C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Array: We create an empty Character array. This is where we append() our shifted chars as we compute them.
If, else: We use an if-statement to test whether the value exceeds a lowercase "z." If so we shift it backwards.
IfUnicodeScalar: We use this type to convert an integer value (based on an arithmetic expression) back into a Character.
Convert Int to CharacterString: We return a new string based on the characters we added in the Character array. This is the result of caesar().
Swift program that implements Caesar cipher
func caesar(value: String, shift: Int) -> String {
// Empty character array.
var result = [Character]()
// Loop over utf8 values.
for u in value.utf8 {
// Apply shift to UInt8.
let s = Int(u) + shift
// See if value exceeds Z.
// ... The Z is 26 past "A" which is 97.
// ... If greater than "Z," shift backwards 26.
// ... If less than "A," shift forward 26.
if s > 97 + 25 {
result.append(Character(UnicodeScalar(s - 26)))
} else if s < 97 {
result.append(Character(UnicodeScalar(s + 26)))
} else {
result.append(Character(UnicodeScalar(s)))
}
}
// Return String from array.
return String(result)
}
// Test Caesar cipher on this string.
let value1 = "test"
print(value1)
let value2 = caesar(value1, shift: 18)
let value3 = caesar(value2, shift: -18)
print("\(value2) \(value3)")
let value4 = caesar(value1, shift: 1)
let value5 = caesar(value4, shift: -1)
print("\(value4) \(value5)")
let value6 = "exxegoexsrgi"
let value7 = caesar(value6, shift: -4)
print("\(value6) \(value7)")
Output
test
lwkl test
uftu test
exxegoexsrgi attackatonce