![Datatool 无法将电子邮件评估为空?](https://linux22.com/image/323395/Datatool%20%E6%97%A0%E6%B3%95%E5%B0%86%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E8%AF%84%E4%BC%B0%E4%B8%BA%E7%A9%BA%EF%BC%9F.png)
给定一个 test.csv 文件,其内容如下:
"BILL TO EMAIL"
"[email protected]"
""
"[email protected]"
"[email protected]"
使用 xelatex 中的 datatool 进行处理:
\documentclass{memoir}
\usepackage{datatool}
\DTLloaddb{data}{test.csv}
\begin{document}
\DTLforeach*{data}{\billtoEM=BILL TO EMAIL}{\billtoEM"\DTLifnull{\billtoEM}{N}{Y}"\par}
\end{document}
结果是:
我如何让测试对第二条记录的评估结果为 N?
答案1
空值和空值之间存在差异(与编程语言类似"" != null
)。如果从 CSV 文件加载数据,则缺失值为空。(该行的该列中有一个空白值。)在构建未分配列值的数据库时,可能会出现空值。(例如,使用 定义数据\DTLnewdb
或使用 从 SQL 中提取数据datatooltk
。)
etoolbox
您可以使用 测试空值\ifdefempty
:
\documentclass{memoir}
\usepackage{datatool}
\DTLloaddb{data}{test.csv}
\begin{document}
\DTLforeach*{data}{\billtoEM=BILL TO EMAIL}{\billtoEM"\ifdefempty{\billtoEM}{N}{Y}"\par}
\end{document}
或者,您也可以使用\DTLifnullorempty
它来测试是否为空值或为空值。
更多详细信息请参阅用户手册 5.5“空值” datatool
。