假设您有几页的文本然后是数字,即姓名地址电话号码。
例子 :
姓名地址 0123 4444 姓名地址 0987 6754 姓名地址 5674 5643 等等
如何创建一条规则,将每个新的“姓名地址号码”移至新行,以便每个人都在新行上?
例如“如果一行中有 4 个数字,则将下一个字母移动到新行”可以达到这个目的,但我不确定需要放入什么程序中才能做到这一点,Word 和 Excel 似乎没有这个功能。
我不是一名程序员,但如果有人能提出任何建议,我将不胜感激。
谢谢
答案1
您可以尝试以下宏:
\n addresses with phone numbers \par
(或空行)表示地址和电话号码列表的结束。宏\par
检测空格后的四位数字作为电话号码的开头。然后打印接下来的四位数字(四加四被认为是整个电话号码)。然后段落结束,下一段从下一个地址开始。
\newcount\tmpnum
\newif\ifdigit
\def\n#1 {#1 \tmpnum=0 \def\nn{}\futurelet\next\nA}
\def\nA{\ifx\next\par \else
\isdigit\next\iftrue \let\next=\nB \else \nn\let\next=\n \fi
\expandafter \next \fi
}
\def\nB #1{\edef\nn{\nn#1}\advance\tmpnum by1
\ifnum\tmpnum<4 \expandafter\nC \else \expandafter\nD \fi
}
\def\nC{\futurelet\next\nA}
\def\nD #1#2#3#4{\nn\ #1#2#3#4\par\n}
\def\isdigit#1#2{%
\ifcat0\noexpand#1%
\edef\tmp{\expandafter\isdigitA\meaning#1}%
\ifnum\expandafter`\tmp<`0 \digitfalse \else
\ifnum\expandafter`\tmp>`9 \digitfalse \else \digittrue \fi\fi
\else \digitfalse \fi
\ifdigit
}
\def\isdigitA#1 #2 #3{#3}
\n
name addres 12 1234 5678 other name address 13 3456 7890 another 123 address
8765 4321
\end