我正在努力学习D,我想在做完hello world的事情之后,我可以尝试一些我以前想在Java中做的事情,因为Regex API的工作方式很痛苦:一个小模板引擎。因此,我从一些简单的代码开始,逐个字符地阅读文件:
import std.stdio, std.file, std.uni, std.array;
void main(string [] args) {
File f = File("src/res/test.dtl", "r");
bool escape = false;
char [] result;
Appender!(char[]) appender = appender(result);
foreach(c; f.rawRead(new char[f.size])) {
if(c == '\\') {
escape = true;
continue;
}
if(escape) {
escape = false;
// do something special
}
if(c == '@') {
// start of scope
}
appender.put(c);
}
writeln(appender.data());
}
我的文件的内容可能是这样的:
<h1>@{hello}</h1>
目标是将@{hello}部分替换为传递给引擎的一些值。
所以,我实际上有两个问题: 1.这是处理D文件中字符的好方法吗?我在搜索了所有导入的模块并挑选了听起来像是可以做这项工作的模块后,把这个放在了一起。2.有时,我想访问多个字符(以改进对转义序列的检查,查找整个范围等。我应该为此对数组进行切片吗?或者D的正则表达式函数可以应对这一挑战吗?到目前为止,我只找到了matchFirst和matchAll方法,但我想匹配、替换并返回到那个位置。如何做到这一点呢?
转载请注明出处:http://www.starkdigitech.com/article/20230526/2289211.html