namespace Algorithms.Strings
module SwapCase =
type System.Char with
member this.IsUpper(): bool =
match this with
| c when c >= 'A' && c <= 'Z' -> true
| _ -> false
member this.IsLower(): bool =
match this with
| c when c >= 'a' && c <= 'z' -> true
| _ -> false
member this.Lower(): char =
match this with
| c when c >= 'A' && c <= 'Z' -> (char) ((int) this + 32)
| _ -> this
member this.Upper(): char =
match this with
| c when c >= 'a' && c <= 'z' -> (char) ((int) this - 32)
| _ -> this
let swapCase (sentence: string): string =
let mutable newString = ""
for character in sentence do
match character with
| c when c.IsUpper() -> newString <- newString + (string) (character.Lower())
| c when c.IsLower() -> newString <- newString + (string) (character.Upper())
| _ -> newString <- newString + (string) character
newString