将文本/数字移至新行

将文本/数字移至新行

假设您有几页的文本然后是数字,即姓名地址电话号码。

例子 :

姓名地址 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

在此处输入图片描述

相关内容