Here is a version with some modifications from my crossreftools package, the code will be added to that package as well.
Use either \labelText or \labelText* in order to show the text or just hide it and then apply \lnameref or \unameref for lower or upper case reference of the referenced text.
\documentclass{article}
\usepackage{blindtext}
\usepackage{hyperref}
\usepackage{crossreftools}
\makeatletter
\def\first@up#1#2\relax{\uppercase{#1}#2}%
\def\first@low#1#2\relax{\lowercase{#1}#2}
\newcommand{\firstupper}[1]{\expandafter\expandafter\expandafter\first@up#1\relax}%
\newcommand{\firstlower}[1]{\expandafter\expandafter\expandafter\first@low#1\relax}%
\def\labelText{%
\@ifstar{\@labeltextstarred}{\@labeltext}
}
\newcommand{\@labeltextstarred}[2]{%
\crtcrossreflabel*{#1}[#2]%
}
\newcommand{\@labeltext}[2]{%
\crtcrossreflabel{#1}[#2]%
}
\def\@lowercasesplitter#1#2#3#4#5\@nil{%
\firstlower{#3}% get the 3rd argument
}
\def\@uppercasesplitter#1#2#3#4#5\@nil{%
\firstupper{#3}% Get the 3rd. argument
}
\newcommand{\lowercasesplitter}[1]{%
\expandafter\@lowercasesplitter#1\@nil%
}
\newcommand{\uppercasesplitter}[1]{%
\expandafter\@uppercasesplitter#1\@nil%
}
\newcommand{\lnameref}[1]{%
\crtifdefinedlabel{#1}{%
\expandafter\lowercasesplitter\csname r@#1\endcsname%
}{}%
}
\newcommand{\unameref}[1]{%
\crtifdefinedlabel{#1}{%
\expandafter\uppercasesplitter\csname r@#1\endcsname%
}{}%
}
\makeatother
\begin{document}
\labelText{Sample with holes}{label:text} \labelText*{and now for something completely different}{other:text}
In \lnameref{label:text} or \unameref{other:text} we have
\end{document}
Much shorter version with the updated crossreftools (version 0.6) package (until the package appears on CTAN/TeXLive/MikTeX) you could use this DropBox link
\documentclass{article}
\usepackage{blindtext}
\usepackage{hyperref}
\usepackage{crossreftools}
\makeatletter
\def\labelText{%
\@ifstar{\@labeltextstarred}{\@labeltext}
}
\newcommand{\@labeltextstarred}[2]{%
\crtcrossreflabel*{#1}[#2]%
}
\newcommand{\@labeltext}[2]{%
\crtcrossreflabel{#1}[#2]%
}
\makeatother
\begin{document}
\labelText{Sample with holes}{label:text} \labelText*{and now for something completely different}{other:text}
In \crtlnameref{label:text} or \crtunameref{other:text} we have
\end{document}
\unexpanded{#1}by\unexpanded{\MakeLowercase{#1}}, but this may be not the best approach. This feels like an XY problem. What is the aim? – Andrew Swann Mar 18 '18 at 10:49