我會使用 Char.IsLetterOrDigit 但我只需要字母大寫。
我似乎找不到組合 Char.IsLetterOrDigit 和 Char.IsUpper 的方法,因為當我嘗試這種方式時不允許使用數字:
if (input.All(Char.IsLetterOrDigit) && input.All(Char.IsUpper))
我在這里錯過了什么嗎?
如何分別檢查每個字母?
uj5u.com熱心網友回復:
All()接受一個可以是 lambda 運算式的謂詞。您可以使用它IsLetter && IsUpper與IsDigit.
input.All(c => (Char.IsLetter(c) && Char.IsUpper(c)) || Char.IsDigit(c))
在線嘗試
或者,您可以使用匹配零個或多個大寫字符或數字的正則運算式:
using System.Text.RegularExpressions;
Regex r = new Regex(@"^[A-Z0-9]*$");
r.IsMatch(input);
在線嘗試
正則運算式解釋:
^[A-Z0-9]*$
^ Start of string
[A-Z0-9] The uppercase letter characters or the digit characters
* Zero or more of the previous
$ End of string
uj5u.com熱心網友回復:
正則運算式適用于這種字串斷言。
作業示例:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
String input = "THIS0IS0VALID";
String pattern = "^[A-Z0-9] $";
bool isValid = Regex.Match(input, pattern).Success;
if(isValid) {
Console.WriteLine("logic here...");
}
}
}
模式分解 (^[A-Z0-9] $):
- ^: 在行首斷言位置
- [A-Z0-9]:要匹配的字符必須是大寫字母或數字
- :我們可以允許對一個或多個字符進行排序
- $: 在行尾斷言位置
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/470764.html
