(*如何检查一个表达式是否是广义上的字符串(可能被Style修饰过,也可能由StringJoin或Row拼接而成)*)
s1 = StringJoin@{"abc","def"};
s2 = Row@{"abc","def"};
s3 = Row@{"abc",Style["def",Red]};
s4 = Row@{Style["abc",Green],"def"};
s5 = Row@{Style["abc",Blue], Style["def",Pink]};
(*我有(广义上的)字符串s1~s5,我尝试写了RichStringQ,但他工作得不好。请赐教修改*)
RichStringQ[expr_]:=StringQ[expr]||MatchQ[expr,_[s_String,___]/;MemberQ[{Style,Row,Text},Head@expr]];
(*下句期望返回5个True,但实际得到{True,False,False,False,False}*)
Map[RichStringQ,{s1,s2,s3,s4,s5}]
s1 = StringJoin@{"abc","def"};
s2 = Row@{"abc","def"};
s3 = Row@{"abc",Style["def",Red]};
s4 = Row@{Style["abc",Green],"def"};
s5 = Row@{Style["abc",Blue], Style["def",Pink]};
(*我有(广义上的)字符串s1~s5,我尝试写了RichStringQ,但他工作得不好。请赐教修改*)
RichStringQ[expr_]:=StringQ[expr]||MatchQ[expr,_[s_String,___]/;MemberQ[{Style,Row,Text},Head@expr]];
(*下句期望返回5个True,但实际得到{True,False,False,False,False}*)
Map[RichStringQ,{s1,s2,s3,s4,s5}]