我正在使用Text react-native组件为我的应用制作标签。我希望能够将所有\n
变成一个实际的换行符,但是如果我像这样\n
\\n
。
我已经尝试了很多方法,但是似乎无法使其正常运行,包括用尝试的转义配置进行替换,replaceAll 当前代码段:
const textCustomSetter = (newValue, newComponent) => {
newComponent.properties.Text = newValue;
newComponent.properties.children = newValue.split('\\n').join('\n');
};
其中textCustomSetter是我的Text组件的设计和运行时设置程序属性。
这可以正确捕获\n
并将其转换为换行符,但将\\n
转换为\
后再换行。
答案 0 :(得分:2)
只需replace
并使用正则表达式即可:
newValue.replace(/[^\\]\\n/g, "\n");
这是通过 not 匹配单个反斜杠,然后匹配文字\n
(例如,反斜杠和n
,而不是换行符)并替换用换行符。
答案 1 :(得分:0)
我相信我已经知道了。这会将\ n变成换行符,并将所有2个或更多斜杠后跟一个n的字符串减少到一个斜杠。我知道这是一个非常具体的规范,但我想分享一下如何使它起作用。感谢您的帮助,让我不再对正则表达式感到困惑!
现在,我只需要弄清楚语法就可以在前端工作。
class func getCurrentReceipt(db: Database) throws -> Ledgers {
if let cr = FoodyDataStack.thisDataStack._currentReceipt {
return cr
}
// Fall through
do {
if let cr = try Ledgers.filter(Ledgers.Columns.receiptClosed == ReceiptStatus.receiptOpen.rawValue).order(Ledgers.Columns.dateModified.desc).fetchOne(db) {
FoodyDataStack.thisDataStack._currentReceipt = cr
return cr
} else {
throw FoodyDataStack.myGRDBerrors.couldNotFindCurrentReceipt
}
} catch FoodyDataStack.myGRDBerrors.couldNotFindCurrentReceipt {
// Create new receipt with default store
let newReceipt = Ledgers()
newReceipt.dateCreated = Date()
newReceipt.dateModified = Date()
newReceipt.receiptStatus = .receiptOpen
newReceipt.receiptUrgency = .immediate
newReceipt.dateLedger = Date()
newReceipt.uuidStore = Stores.defaultStore(db).uuidKey
FoodyDataStack.thisDataStack._currentReceipt = newReceipt
return newReceipt
} catch {
NSLog("WARNING: Unhandled error in Ledgers.getCurrentReceipt() \(error.localizedDescription)")
}
}