我正在试图找出一种方法来检查字符串的第一个元素,如果它是一个数字或不是.
if not(myString[0] in [0..9]) then //Do something
Run Code Online (Sandbox Code Playgroud)
问题是我收到错误"元素0无法访问 - 使用'长度'或'SetLength"
另一种方式来自我的C-like exprieince - 将字符串的第一个元素转换为char并检查char,但编译错误没有区别.
if not(char(myString[0]) in [0..9]) then //Do something
Run Code Online (Sandbox Code Playgroud)
我该如何完成它?
Ond*_*lle 40
字符串是基于1的:
if not (myString[1] in ['0'..'9']) then // Do something
Run Code Online (Sandbox Code Playgroud)
smo*_*ok1 16
Pascal和Delphi从1开始索引字符串.这是从零字节包含长度的时间开始的遗留,而下一个255(索引1到255)包含实际字符.Joel Spolsky写了很多关于字符串问题的文章:http:
//www.joelonsoftware.com/articles/fog0000000319.html
Delphi字符串使用基于1的索引,因此只需重写即可
if not(myString[1] in ['0'..'9']) then //Do something
Run Code Online (Sandbox Code Playgroud)
还要注意周围的引号0..9,否则你会将字符与整数进行比较.
我们应该记住一些事情:
AnsiString(每个字符1个字节)和WideString新版本(每个字符2个字节).AnsiChar,但不支持set WideChar.因此,如果我们想要编写与所有版本的Delphi兼容的代码,那么它应该是这样的:
if (myString[Low(myString)]>='0') and (myString[Low(myString)]<='9') then
// Do something
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36050 次 |
| 最近记录: |