Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. extension String {
  2. private func convertFullWidthToHalfWidth(reverse: Bool) -> String {
  3. let str = NSMutableString(string: self) as CFMutableString
  4. CFStringTransform(str, nil, kCFStringTransformFullwidthHalfwidth, reverse)
  5. return str as String
  6. }
  7.  
  8. var hankaku: String {
  9. return convertFullWidthToHalfWidth(false)
  10. }
  11.  
  12. var zenkaku: String {
  13. return convertFullWidthToHalfWidth(true)
  14. }
  15.  
  16. private func convertFullWidthToHalfWidthOnlyNumber(fullWidth: Bool) -> String {
  17. var str = self
  18. let pattern = fullWidth ? "[0-9]+" : "[0-9]+"
  19. let regex = try! NSRegularExpression(pattern: pattern, options: [])
  20. let results = regex.matchesInString(str, options: [], range: NSMakeRange(0, str.characters.count))
  21.  
  22. results.reverse().forEach {
  23. let subStr = (str as NSString).substringWithRange($0.range)
  24. str = str.stringByReplacingOccurrencesOfString(
  25. subStr,
  26. withString: (fullWidth ? subStr.zenkaku : subStr.hankaku))
  27. }
  28. return str
  29. }
  30. var hankakuOnlyNumber: String {
  31. return convertFullWidthToHalfWidthOnlyNumber(false)
  32. }
  33.  
  34. var zenkakuOnlyNumber: String {
  35. return convertFullWidthToHalfWidthOnlyNumber(true)
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement