存储动态字符串
Posted
技术标签:
【中文标题】存储动态字符串【英文标题】:storing dynamic strings 【发布时间】:2019-12-09 12:09:54 【问题描述】:任务如下。
检查单词 (Player) 的字符串并将其替换为数组中的名称;如果字符串中有另一个单词(Player),则将其替换为另一个名称。 我可以将名称替换一次,但是如何通过将字符串中的所有单词(Player)替换为不同的名称来做到这一点?
【问题讨论】:
将变量添加到您的字符串中,例如“@NAME@ 必须用@NAME@ 喝果汁”,将@NAME@ 替换为您的数组中的名称 如果我将字符串保存在文本文件中,这是一种好的做法还是做其他事情更好? 请阅读***.com/help/how-to-ask @joakimDanielson 我几乎尝试了上面的建议。我将这些行保存在一个文本文件中,并将名称替换为变量。我不要求你给我写代码。我想知道是否有更正确或更好的方法来做到这一点 “占位符”,您正在寻找“占位符”。您可以使用“%@”,也可以使用String(format:)
、自定义占位符#HERE#
等。
【参考方案1】:
您需要的是 StringWithFormatter
,并使用占位符 %@
替换字符串的某些部分。
或者您可以做的另一件事是 appendAttributedString
。为此,您必须将字符串分成不同的部分。
如果使用下面的文字
“亚历克斯必须和妮可一起喝果汁”
我们可以把它分成三部分
1.前缀(名字)
2.PostFix (secondName)
3.The String(一定要喝果汁)
在更改 Strng 值时,您必须将它们初始化为 AttributedStrings
或 MutableAttributedStrings
。接下来您可以使用,
NSMutbableAttributedString prefixName = [[NSMutableAttributedString init] alloc];
//assing the name1 value here either from a customString file or objects or however you want it passed
NSMutableAttributedString String = [[NSMutableAttributedString initWithString:@"must drink juice with"];
NSMutbableAttributedString posFixName = [[NSMutableAttributedString init] alloc];
//assing the name2 value here either from a customString file or objects or however you want it passed
[prefixName appendAttributedString:String];
[String appendAttributedString:postFix];
//this would result in Name1must drink juice withName2 , you will probably have to manage spacing if i remember right
【讨论】:
为什么使用NSAttributedString
?那不是问题。此外,如果在另一种语言中,prefixName 和 postFixName 应该被还原等会发生什么。这里是开始和结束,但可能在中间,等等。
无论位置如何,您仍然可以使用 this 附加单词,但是就像我所说的使用占位符并将它们作为 plist 或 customstring 文件中的值传递是最好的方法。显然我们也可以使用变量并传递它们以上是关于存储动态字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串(来自具有 n 行数的文件)存储在动态数组中? C++