我正在用Swift制作应用程序,并且正在使用Firebase Firestore。Firestore是一个数据库,它具有一些我放入UILabel
中的字符串。有了我的某些字符串,我正在使用新的行命令(或n)
。所以我的某些字符串看起来像这样:
"This is line onenThis is line twonThis is line three"
但是,每当检索该字符串时,它是 UILabel
的addetoto,看起来像这样...
这是一行 n这是第2行 n这是第三行
...当应该像这样...
这是一行
这是两行
这是第三行
我假设n
不适合来自数据库的字符串?我尝试使用\n
双重逃脱。有人对此有修复吗?
这是我正在使用的代码...
database.collection("songs").whereField("storyTitle", isEqualTo: "This is the story header").getDocuments { (snapshot, error) in
for document in (snapshot?.documents)! {
self.storyBodyLabel.text = (document.data()["storyBody"] as? String)!
}
}
我得到了它。我只是简单地替换了角色" n n"从我使用newline命令接收的字符串中。
label.text = stringRecived.replacingOccurrences(of: "n", with: "n")
因为我手动键入我的字符串,并给了firebase一个字符串 "Line onenline twonline three"
我正在替换" n n"与" n"但是,如果您给Firebase一个
"Line one
Line two
Line three"
firebase用 "\n"
替换了这些回报,然后制作代码
label.text = stringRecived.replacingOccurrences(of: "\n", with: "n")
希望有帮助!
您可以使用CSS Whitespace属性 n,它对我有用。
white-space: pre-line;
解决方案:将其添加到您的字符串中,然后完成(适用于Java用户(:
。
示例:
if (dataSnapshot.exists())
{
ArrayList<String> userlogs2 = new ArrayList<String>();
userlogs2.add(dataSnapshot.getValue().toString().replace("\n", "n"));
Iterator<String> it2 = userlogs2.iterator();
while (it2.hasNext()) {
appendColoredText(userlogsmessages2, it2.next() + "n", Color.BLACK);
appendUnderlinedText(userlogsmessages2,"____________" + "nn", Color.parseColor("#DB808080"));
}
firestore不支持字符串值中的任何逃生序列。如果您在字符串中写入" n",则在阅读时将完全回到。如果您需要存储特殊的东西,则可能需要编码并解码该内容。
尝试了所有建议的答案,但没有一个对我有用的答案。最后,我通过在Firestore记录中使用"/n"
修复了它,在Swift客户端中,我将其修复:
label.text = stringReceived.replacingOccurrences(of: "/n", with: "n")
对我来说,firebase将全部 n转换为\\ n,所以我只是用:
逆转了这种变化theString.replaceAll( "\\n", "n" );
只是发布,因为我浪费了一些时间来计算正确的''
我发现我可以使用string.fromcharcode((函数将新线进入firestore字段。Firestore似乎需要字符串中的特殊字符是实际字符ASCII值,并且不会重新诠释逃生字符。
即。
"第一行" string.fromcharcode(13( "第二行"
DB.collection(Global.DB_COLLECTION_PATH).document(NEWS_ID).get().addOnCompleteListener(new OnCompleteListener< DocumentSnapshot >() {
@Override
public void onComplete(@NonNull Task< DocumentSnapshot > task) {
if (task.isSuccessful()) {
body1 = task.getResult().getString("newsBody").replace("n", "n");
nBody.setText(body1);
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("DB FAILED", e.getMessage());
}
});
我希望这对您有用
我注意到,当您在JSON导出中添加 n的字符串时,然后将JSON上传到实时数据库中时,它会充当newline。但是,如果您从firebase控制台进行编辑,它会给您带来 n而不是newline的字符串。
firestore添加此类型----行 nline二 nline三
获取刺痛,替换并用TextView
显示字符串sura = modellist.get(position(.getSura((。替换(" n"," n"(;
工作..