博客> IOS不同语言实现数字的高亮显示(富文本)
IOS不同语言实现数字的高亮显示(富文本)
2019-05-16 15:03 评论:0 阅读:666 gaomeng
ios 富文本

最近在做富文本的时候,遇到了一个问题。如果只是在某一种语言中将数字高亮显示,那只需要将字符串中的数字遍历出来去修改它们的颜色就可以了。可是如果是要求在不同的语言中去高亮显示相同的某些数字就稍微有点麻烦(因为不同的语种数字出现的位置是不确定的),例如中文说“观看这个直播需要支付xx金币”、英文就是“It will cost xx coins to watch the broadcast.”这时该怎么办呢? 1、由于不同语言数字的位置不同,所以我们在做国际化的时候先在数字的位置给定一个默认值(示例中为9),这样方便我们后面去定位数字的位置。 英文:"title.EnterCharges.charges" = "It will cost 9 coins to watch the broadcast."; 中文:"title.EnterCharges.charges" = "观看这个直播需要支付9金币"; 2、用我们真实要显示的数字变量去替换默认值9,这样就可以将我们真正需要显示的值插入不同的语种之中。 var s1 = 44 let s3 = NSLocalizedString("title.EnterCharges.charges", comment: "") let tempStr = s3.stringByReplacingOccurrencesOfString("9", withString: String(format:"%d", s1)) 3、去改变字符中数字的颜色 let attStr = NSMutableAttributedString.init(string: tanView.label1.text!) var temp: NSString = "" for i in 0..<((tanView.label1.text!) as NSString).length { temp = ((tanView.label1.text!) as NSString).substringWithRange(NSMakeRange(i, 1)) if (self.isInt(temp)) { attStr.setAttributes([NSForegroundColorAttributeName : RGBCOLOR(246, g: 115, b: 33)], range: NSMakeRange(i, 1)) } } tanView.label1.attributedText = attStr

//遍历数字的函数 func isInt(string: NSString) -> Bool { let str: NSString = string.stringByTrimmingCharactersInSet(NSCharacterSet.decimalDigitCharacterSet()) as NSString if str.length > 0 { return false } return true }

收藏
0
sina weixin mail 回到顶部