存储动态字符串

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 值时,您必须将它们初始化为 AttributedStringsMutableAttributedStrings。接下来您可以使用,

    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 文件中的值传递是最好的方法。显然我们也可以使用变量并传递它们

以上是关于存储动态字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在MYSQL存储过程中的字符串动态列表中搜索字符串

如何将字符串(来自具有 n 行数的文件)存储在动态数组中? C++

为啥 useRef 值在它是整数时会动态更新,但在它是字符串时会存储先前的值?

将环境变量存储在动态分配的数组中

动态增加 C 字符串的大小

从 C#/.Net 在 oracle 中创建和编译“动态”存储过程