如何使用 datatool 从 .csv 文件读取的数据变为大写字母?

如何使用 datatool 从 .csv 文件读取的数据变为大写字母?

我想将数据转换\g为大写字母,然后我想使用该数据进行比较命令,例如\IfStrEq{\g}{F}{}{}因为其中\g可能包含fF;如果它包含f则将其转换为大写字母,\MakeUppercase命令在里面不起作用\IfStrEq。这是我的 MWE:

 \documentclass[10.0pt,legalpaper,landscape]{article}
 \usepackage[top=0.5cm,bottom=1.4cm,left=2cm,right=0.1cm]{geometry}
 \usepackage[table]{xcolor}
 \usepackage[all]{tcolorbox}
 \usepackage{filecontents}
 \usepackage[english]{babel}
 \usepackage{graphicx,booktabs,xstring,datatool,xintexpr,longtable,minted} %for including eps graphics
 \usepackage{multirow,colortbl}
 \usepackage{ifthen}
 \newboolean{long}   

 \renewcommand{\dtldisplaystarttab}{\toprule}
 \renewcommand{\dtldisplayafterhead}{\midrule}
 \renewcommand{\dtldisplayendtab}{\\\bottomrule}


 \begin{filecontents*}{test.csv}    
 Name,Gender,Blood Group
 Mr. A,f,A+
 Mr B,m,AB-
 Mr. C,f,O+
 Mr D,M,AB-
 Mr. E,F,O+
 Mr. F,F,O+
 Mr. G,F,O+
 \end{filecontents*}
 \newcounter{Female}
 \newcounter{Male}
 \newcounter{Total}

 \DTLloaddb{name}{test.csv}     

 \begin{document}
 \begin{longtable}{|c|l|c|c|}
 \hline
  Sl. No. & Name & Gender & Blood Group

  \DTLforeach*{name}{\name=Name,\b=Blood Group,\g=Gender}{%

  \IfStrEq{\MakeUppercase{\g}}{F}{\stepcounter{Female}\\\hline \theFemale & \name & \b & \g }{}

  }\\\hline

  &&\MakeUppercase{latex}&

  \end{longtable}
  \centering
  \MakeUppercase{latex}   

  \end{document}

答案1

测试性别是否是的子字符串f,F

在此处输入图片描述

\documentclass{article}

\usepackage{filecontents}
\usepackage{xstring,datatool}

\begin{filecontents*}{test.csv}
Name,Gender,Blood Group
Mr. A,f,A+
Mr B,m,AB-
Mr. C,f,O+
Mr D,M,AB-
Mr. E,F,O+
Mr. F,F,O+
Mr. G,F,O+
\end{filecontents*}

\newcounter{Female}

\DTLloaddb{name}{test.csv}

\begin{document}

\begin{tabular}{|c|l|c|c|}
  \hline
  Sl. No. & Name & Gender & Blood Group
  \DTLforeach*{name}{\name=Name,\b=Blood Group,\g=Gender}{%
    \IfSubStr{f,F}{\g}{\stepcounter{Female}%
    \\
    \hline \theFemale & \name & \b & \g }{}
  }\\ 
  \hline
\end{tabular}

\end{document}

\MakeUppercase{\g}在比较中不可展开,这意味着它\g直到很晚才会变成大写等价物。由于您正在处理一组非常具体的可能性,\IfSubStr因此可以使用其他字符分隔选项。

相关内容