Gre*_*ean 95
无需创建新字符串:
bool IsAllUpper(string input)
{
for (int i = 0; i < input.Length; i++)
{
if (!Char.IsUpper(input[i]))
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想跳过非字母字符(OP的原始实现没有,但他/她的评论表明他们可能想要):
bool IsAllUpper(string input)
{
for (int i = 0; i < input.Length; i++)
{
if (Char.IsLetter(input[i]) && !Char.IsUpper(input[i]))
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 76
我喜欢LINQ方法.
如果要将其限制为所有大写字母(即没有空格等):
return input.All(c => char.IsUpper(c));
Run Code Online (Sandbox Code Playgroud)
或使用方法组转换:
return input.All(char.IsUpper);
Run Code Online (Sandbox Code Playgroud)
如果你想禁止小写字母:
return !input.Any(c => char.IsLower(c));
Run Code Online (Sandbox Code Playgroud)
要么
return !input.Any(char.IsLower);
Run Code Online (Sandbox Code Playgroud)
Bol*_*ait 55
简单?
if (input.ToUpper() == input)
{
// string is all upper
}
Run Code Online (Sandbox Code Playgroud)
Ife*_*ruo 14
确保您的大写定义匹配.Nets定义大写.
.Net中的ToUpper()是一种语言操作.在某些语言中,大写规则并不是直截了当的.土耳其语我因此而闻名.
// Meaning of ToUpper is linguistic and depends on what locale this executes
// This test could pass or fail in ways that surprise you.
if (input.ToUpper() == input)
{
// string is all upper
}
Run Code Online (Sandbox Code Playgroud)
你可以用
// Meaning of ToUpper is basically 'ASCII' ToUpper no matter the locale.
if (input.ToUpper(CultureInfo.InvariantCulture) == input)
{
// string is all upper
}
Run Code Online (Sandbox Code Playgroud)
你可能想要通过字符大写来节省内存
for(int i = 0; i < input.Length; i++) {
if(input[i] != Char.ToUpper(input[i], CultureInfo.InvariantCulture)) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码介绍了一个bug.一些非英语'字母'需要两个.net字符来编码(代理对).您必须检测这些对并将它们作为一个单元进行大写.
此外,如果您省略了文化信息以获得语言大写,那么您将引入一个错误,在某些区域设置中,您的家庭酿造大写算法不同意该区域设置的.net算法.
当然,如果您的代码永远不会在英语区域之外运行或从不接收非英语文本,那么这一切都不重要.
我会将字符串转换为所有大写字母(with ToUpper)然后将其与原始字符串(使用)进行比较Equals.应该可以在一行代码中使用.
return s.Equals(s.ToUpper())
| 归档时间: |
|
| 查看次数: |
38993 次 |
| 最近记录: |