Skip to content

Instantly share code, notes, and snippets.

@eienf
Created August 21, 2017 12:39
Show Gist options
  • Save eienf/c47151127390705ad50fc88762c725e8 to your computer and use it in GitHub Desktop.
Save eienf/c47151127390705ad50fc88762c725e8 to your computer and use it in GitHub Desktop.
import Foundation
extension String {
var hankanaRange : NSRange {
get {
return String.rangeOfHankana(self)
}
}
var stringWithoutHankana : String {
get {
var str = self
var range = NSMakeRange(NSNotFound, 0)
repeat {
range = String.rangeOfHankana(str)
str = String.convHan2Zen(str, range: range)
} while ( range.location != NSNotFound )
return str
}
}
static func rangeOfHankana(str:String) -> NSRange {
var location = NSNotFound
var length = 0
var i = 0
let range = NSMakeRange(0xff61,0xff9f - 0xff61)
let characterSet = NSCharacterSet(range: range)
for c in str.utf16 {
if location == NSNotFound {
if characterSet.characterIsMember(c) {
location = i
length = 1
} else {
}
} else {
if characterSet.characterIsMember(c) {
length += 1
} else {
break
}
}
i += 1
}
return NSMakeRange(location, length)
}
static func convHan2Zen(string:String, range:NSRange) -> String {
let str = NSMutableString(string: string)
var cfr = CFRangeMake(range.location == NSNotFound ? kCFNotFound : range.location, range.length)
CFStringTransform(str, &cfr, kCFStringTransformFullwidthHalfwidth, true)
return str as String
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment