データベース プログラムでの出力用に、太字または斜体を示すためにマークを挿入した特定のテキストと、画像の代わりに使用するテキストがあります。例えば:
「%Important% ^All employees to the breakroom^」の最終出力は次のようになります。
重要 全従業員は休憩室へ
「%」記号と「^」記号で囲まれたテキストを検索するコードを記述しましたが、現在の問題は次のようなテキスト出力です。
%重要% ^全社員、休憩室へ^
文字列のフォーマットを保持しながら、これらの % と ^ を削除したいと思います。
これは、壊れるまで使用しているコードです。
func processText(inString string: String) -> NSAttributedString {
let pattern = ["(?<=\\^).*?(?=\\^)","(?<=\\%).*?(?=\\%)","\\^", "\\%"]
let italicsRegex = NSRegularExpression(pattern: pattern[0], options: .allZeros, error: nil)
let range = NSMakeRange(0, count(string))
let italicsMatches = italicsRegex?.matchesInString(string, options: .allZeros, range: range) as? [NSTextCheckingResult]
var attributedText = NSMutableAttributedString(string: string)
for match in italicsMatches! {
attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica-Oblique", size: 14.0)!, range: match.range)
}
let boldRegex = NSRegularExpression(pattern: pattern[1], options: .allZeros, error: nil)
let boldMatches = boldRegex?.matchesInString(string, options: .allZeros, range: range) as? [NSTextCheckingResult]
for match in boldMatches! {
attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica-Bold", size: 14.0)!, range: match.range)
}
let removeItalicsMarksRegex = NSRegularExpression(pattern: pattern[2], options: .allZeros, error: nil)
let removeItalicsMarksMatches = removeItalicsMarksRegex?.matchesInString(string, options: .allZeros, range: range) as? [NSTextCheckingResult]
var numberOfLoops = 0
for match in removeItalicsMarksMatches! {
attributedText.replaceCharactersInRange(match.range, withString: "")
}
return attributedText.copy() as! NSAttributedString
}
これは % 一致 (ただし最初の文字のみ) で機能し、^ 文字ですぐにクラッシュします。
これを解決するための助けやアドバイスをいただければ幸いです。ありがとう。