Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
法罗Smalltalk。将html文件模板中的所有内容复制到静态页面文件_Html_Replace_Tags_Smalltalk_Pharo - Fatal编程技术网

法罗Smalltalk。将html文件模板中的所有内容复制到静态页面文件

法罗Smalltalk。将html文件模板中的所有内容复制到静态页面文件,html,replace,tags,smalltalk,pharo,Html,Replace,Tags,Smalltalk,Pharo,我有一个HTML模板文件,其中我使用自己的分隔符创建了字段标记。例如: "This is html with ~~fieldName~~ embedded." 我需要读取HTML模板文件,用替换文本替换所有~~字段名~~,然后写出新的静态HTML文件 以下是我尝试过的简单版本: file := StandardFileStream fileNamed: 'inHtmlTemplate.html'. aString := file contentsOfEntireFile. outHtmlS

我有一个HTML模板文件,其中我使用自己的分隔符创建了字段标记。例如:

"This is html with ~~fieldName~~ embedded."
我需要读取HTML模板文件,用替换文本替换所有~~字段名~~,然后写出新的静态HTML文件

以下是我尝试过的简单版本:

file := StandardFileStream fileNamed: 'inHtmlTemplate.html'. 
aString := file contentsOfEntireFile. 
outHtmlString := aString copyReplaceAll:'~~fieldName~~' 
    with: 'newString' asTokens: false.
问题在于,方法copyReplaceAll:with:asTokens:是在String类中实现的,而不是在具体的子类ByteString中实现的(而copyReplaceAll:with:asTokens:method则回答“doesNotUnderstand”)。HTML文件的内容在转换为aString时成为ByteString的一个实例

总之,我需要搜索并替换HTML模板中的所有字段标记,然后输出生成的静态HTML文件


使用Pharo4或Pharo的更高版本-我如何才能使上述功能正常工作

我无法在Pharo 6.1中重现您的问题。你的例子对我很有用。是否有ByteString实例并不重要,因为它是String的子类,因此也可以理解copyReplaceAll:with:asTokens:。如果出现“不理解”错误,请检查调试器中的顶部框架。您的代码中很可能有输入错误,或者对象不是从字符串继承的


我无法在Pharo 6.1中重现您的问题。你的例子对我很有用。是否有ByteString实例并不重要,因为它是String的子类,因此也可以理解copyReplaceAll:with:asTokens:。如果出现“不理解”错误,请检查调试器中的顶部框架。您的代码中很可能有输入错误,或者对象不是从字符串继承的


您是否尝试过使用:代替
copyReplaceAll:?(注意这里没有
asTokens:
关键字)copyReplaceAll:with:只是我正在使用的方法的包装器,但最后一个参数有一个硬编码的“true”。根据操场上的测试,我需要“false”参数,而不是在Pharo6.1中。在该版本中,
copyReplaceAll:with:
String
@Leandro-Ok中完全实现。感谢您提供实施细节。我去看看。顺便说一句,我上面的代码示例在Pharo6.1中确实有效(但在Pharo4或5中不起作用)。您是否尝试过使用:
替代copyReplaceAll:?(注意这里没有
asTokens:
关键字)copyReplaceAll:with:只是我正在使用的方法的包装器,但最后一个参数有一个硬编码的“true”。根据操场上的测试,我需要“false”参数,而不是在Pharo6.1中。在该版本中,
copyReplaceAll:with:
String
@Leandro-Ok中完全实现。感谢您提供实施细节。我去看看。顺便说一句,我上面的代码示例在Pharo6.1中确实有效(但在Pharo4或5中不起作用)。-您是对的。我的代码示例确实适用于Pharo6.1。但法罗5号和法罗4号不起作用。我检查了
copyReplaceAll:with:asTokens:
方法的实现,它在所有三个版本中看起来都一样。我将把我的小应用移植到最新的Pharo上。谢谢-你说得对。我的代码示例确实适用于Pharo6.1。但法罗5号和法罗4号不起作用。我检查了
copyReplaceAll:with:asTokens:
方法的实现,它在所有三个版本中看起来都一样。我将把我的小应用移植到最新的Pharo上。非常感谢。