Julia:检查字符串中的第一个字母是否为小写首选语法

Julia: Check if first Letter in String Is Lowercase preferred syntax

假设我有一个字符串 x="1. this should be capitalized"

现在如果我想检查第一个字母是否大写

s = "1. (t)his should be capitalized"
s2 = match(r"^.*?([a-zA-Z])", s).captures[1]
@show all(islowercase, s2)
# true

如果我这样做 islowercase(s2),我会得到一个 MethodError。虽然我也可以 @show uppercasefirst(s2) != s2 但这似乎不必要地冗长。

如您所知,islowercase 适用于单个字符,而不适用于字符串。要从正则表达式匹配字符串中提取第一个字符,您可以使用 first:

julia> s = "1. (t)his should be capitalized";

julia> s2 = match(r"^.*?([a-zA-Z])", s).captures[1]
"t"

julia> islowercase(first(s2))
true

不需要正则表达式。直接在你的字符串上使用 islowercase(通过 splatting 和 broadcasting),得到第一个真实结果的索引。

findfirst(  islowercase.([ x... ])  )

如果你的字符串语法不一致,你也可以检查它是否是一个字母。

findfirst( islowercase.( [ x... ] ) .& isletter.( [ x... ] ) )

您也可以执行以下操作:

 s = "1. (t)his should be capitalized";
 s2 = s[findfirst(r"[:alpha]", s)[1]]
 islowercase(s2)