For executing code after the end of a parameterless macro there are \ltx@GlobalAppendToMacro and \ltx@LocalAppendToMacro from the ltxcmds-package.
For executing code after the end of an environment there is \AfterEndEnvironment from the etoolbox-package, and without the e-TeX extension one can use \renewenvironment for this.
But how can one "append" code after a label of an \item? \item has one (optional) parameter, thus \ltx@GlobalAppendToMacro and \ltx@LocalAppendToMacro cannot be used. At \end{description} would be too late.
MWE:
\documentclass{article}
\begin{document}
\begin{description}
\item[Label\ReplaceMe{\textbf{OK}}] Text.
\item[Label\ReplaceMe{\textbf{abc}}] Text.
\item[Label] Text.
\item Item without label.
\end{description}
\end{document}
The
\item[Label\ReplaceMe{\textbf{OK}}] Text.
should "expand" to
\item[Label]\textbf{OK} Text.
and the others accordingly. \item itself (or macros called by it) as found in
File A: ltlists.dtx Date: 2002/10/28 Version v1.0s (source 2e, 2011/06/27)
contains \box, \hbox,... The label text is thus "boxed", and I want to "free" a part of it. With "boxed" I do not want to indicate that there would be any rectangular line around "Label".
Looking at the answer provided by Werner, would it be sufficient to use the following code?
\documentclass{article}
\usepackage{letltxmacro}
\makeatletter
\newcommand*{\ReplaceMe}[1]{\gdef\saved{#1}}
\ReplaceMe{}
\LetLtxMacro{\@olditem}{\@item}%
\newenvironment{desc}%
{\renewcommand*{\@item}[1][]{% \begin{desc}
\@olditem[##1]\saved\gdef\saved{}%
}%
\begin{description}}%
{\end{description}}% \end{desc}
\makeatother
\begin{document}
\noindent Here is some text.
\begin{desc}
\item[Label\ReplaceMe{\textbf{OK}}] Text.
\item[Label\ReplaceMe{\textbf{abc}}] Text.
\item[Label] Text.
\item Item without label.
\end{desc}
Here is some more text.
\begin{description}
\item[Label\ReplaceMe{\textbf{OK}}] Text.
\item[Label\ReplaceMe{\textbf{abc}}] Text.
\item[Label] Text.
\item Item without label.
\end{description}
\end{document}

