我正在扩展我的一个类,用于存储通用大小字符串,以允许用户输入更灵活的值。例如,我以前的此类版本很严格,只允许 2x3
或 9x12
的格式。但现在我正在制作它,以便它可以支持诸如 2 x 3
或 9 X 12
之类的值,并在值发生更改时自动维护原始用户的格式。
我想弄清楚的真正问题是如何检测字符串中的一个字符是大写还是小写?因为我必须检测区分大小写。如果分隔符是“x”(小写)并且用户在值内输入“X”(大写),并且关闭区分大小写,我还需要能够找到相反的大小写。
我的意思是,Pos()
函数区分大小写...
最佳答案
Delphi 7 具有用于字符串的 UpperCase() 和 LowerCase() 函数。还有用于字符的 UpCase()。
如果我想不区分大小写地在另一个字符串中搜索子字符串,我会这样做:
if Pos('needle', LowerCase(hayStack)) > 0 then
您只需使用小写字符串文字(或常量)并在搜索之前对字符串应用小写函数即可。如果您要进行大量搜索,则只需将其转换为临时变量一次就有意义。
这是您的案例:
a := '2 x 3'; // Lowercase x
b := '9 X 12'; // Upper case X
x := Pos('x', LowerCase(a)); // x = 3
x := Pos('x', LowerCase(b)); // x = 3
要查看某个字符是大写还是小写,只需将其与它的大写版本进行比较即可:
a := 'A';
b := 'b';
upper := a = UpCase(a); // True
upper := b = UpCase(b); // False
关于string - 如何检测字符串中的字符是大写还是小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394241/