TextView无法显示含换行符字符串中的换行问题求助
TextView无法识别\n换行符的解决方法
问题场景
从Firebase数据库读取包含\n的字符串时,TextView未将其解析为换行,而是直接显示成Testing1\n Testing2\n Testing3,预期显示效果为:
Testing1 Testing2 Testing3
Firebase数据结构如下:
PlaceInfo | |- attractions | |- attractionName | |- about : "Testing1\n Testing2\n Testing3"
读取数据的核心代码:
let Ref = Database.database().reference().child("PlaceInfo") let myRef = Ref.child("attractions").child(strAttractionName) myRef.observeSingleEvent(of: .value, with: {(snapshot) in if(snapshot.childrenCount > 0 ){ guard let value = snapshot.value as? [String: String] else { return } let strAbout:String = value["about"]! self.tvPlaceDesc.text = strAbout } else { print("no value") } })
问题原因
Firebase中存储的\n是字面量字符(即字符串实际包含\和n两个独立字符),而非转义后的换行符。TextView无法识别这种字面量,因此直接原样显示。
解决方案
方案1:替换字符串中的字面量\n
在将字符串赋值给TextView前,把字面量的\\n替换为真正的换行符\n:
let strAbout:String = value["about"]! // 替换字面量\n为换行符 let formattedText = strAbout.replacingOccurrences(of: "\\n", with: "\n") self.tvPlaceDesc.text = formattedText
方案2:直接在Firebase中输入换行
如果可以修改Firebase的数据,在控制台输入内容时,直接按回车键换行,而非手动输入\n。这样存储的就是原生换行符,读取后无需处理即可直接在TextView中显示换行。
内容的提问来源于stack exchange,提问作者MilkBottle
相关产品推荐
相关产品推荐

