extension String {
// 全角文字列を半角文字列に変換した文字列を取得
public var halfwidthcaseString: String {
let text:CFMutableString = NSMutableString(string: self) as CFMutableString
CFStringTransform(text, nil, kCFStringTransformFullwidthHalfwidth, false)
return text as String
}
// 半角文字列を全角文字列に変換した文字列を取得
public var fullwidthcaseString: String {
let text:CFMutableString = NSMutableString(string: self) as CFMutableString
CFStringTransform(text, nil, kCFStringTransformFullwidthHalfwidth, true)
return text as String
}
// カタカナをひらがなに変換した文字列を取得
public var hiraganacaseString: String {
let text:CFMutableString = NSMutableString(string: self) as CFMutableString
CFStringTransform(text, nil, kCFStringTransformHiraganaKatakana, true)
return text as String
}
// ひらがなをカタカナに変換した文字列を取得
public var katakanacaseString: String {
let text:CFMutableString = NSMutableString(string: self) as CFMutableString
CFStringTransform(text, nil, kCFStringTransformHiraganaKatakana, false)
return text as String
}
}
var half = "ABC".halfwidthcaseString
half //=> "ABC"
var full = half.fullwidthcaseString
full //=> "ABC"
var kana = "カタカナ".hiraganacaseString
kana //=> "かたかな"
var katakana = kana.katakanacaseString
katakana //=> "カタカナ"
★ 文字列数を取得する
extension String {
var length: Int {
get { return self.characters.count }
}
}
★ HTML → NSAttributedString変換
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let str = "It is <span style=\"text-decoration: underline;\">the</span> <span style=\"text-decoration: underline;\">year-end</span> season, so there are some events, such as Christmas <span style=\"text-decoration: underline;\">and year</span>-end <span style=\"text-decoration: underline;\">parties</span>. Japanese people <span style=\"text-decoration: underline;\">become busiest at this time of</span> year. However, I don't like this season very much because <span style=\"text-decoration: underline;\">it's</span> cold and bustling."
if let attribute = str.htmlAttributedString() {
// 文字色を赤にする
attribute.addAttribute(NSForegroundColorAttributeName, value: UIColor.red , range: NSMakeRange(0, (attribute.string as NSString).length))
label.attributedText = attribute
}
}
}
extension String {
func htmlAttributedString() -> NSMutableAttributedString? {
guard let data = self.data(using: String.Encoding.utf16, allowLossyConversion: false) else { return nil }
guard let html = try? NSMutableAttributedString(data: data, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) else { return nil }
return html
}
}