Evaluating by two lines instead of one line code?

Hello,
I calculated together as

StringReplace[ToString[h["ANOVATablePValues"], TraditionalForm], 
 "{" ~~ x___ ~~ "}" -> x]

It showed the error as:

Screenshot2022-04-03211502.jpg

When I calculated separately, it was correct as:

ToString[h["ANOVATablePValues"], TraditionalForm]
StringReplace["\!\(\*FormBox[\({1.2943642097764646`*^-9}\),
TraditionalForm]\)", "{" ~~ x___ ~~ "}" -> x]

The results were:

{1.29436*10^-9}

and

1.29436*10^-9

Why convert to a string to remove the {}? Why not

h["ANOVATablePValues"] // First

But why was the previous one wrong?

Because they are not the same. Compare

ToString[h["ANOVATablePValues"], TraditionalForm] // FullForm

with what you used with StringReplace where it “worked”.

But when I copied the result of ToString[h["ANOVATablePValues"], TraditionalForm], it is "\!\(\*FormBox[\({1.0440125915074059*^-41}),
TraditionalForm])"` that can be evaluated by StringReplace function correctly.