【发布时间】:2015-09-18 16:22:51
【问题描述】:
我把这段代码放到Delphi中,但出现错误
运算符不适用于此操作数类型
我不知道这意味着什么以及为什么会出现。我试图只从格式为
的电子邮件中获取姓氏isurnameyy@kjh.com
其中 i 是首字母缩写,yy 是加入公司的年份。我知道我不能只使用 midstr 所以我尝试使用 NOT 命令来消除电子邮件的其余部分以留下姓氏。
代码如下:
uses
System.SysUtils,
strutils;
var email: string;
begin
writeln('input your email');
readln(email);
writeln('Your last name is ', (NOT leftstr(email,2)) AND (NOT rightstr(email,10)));
readln;
end.
【问题讨论】:
-
错误似乎很明显。
not不适用于字符串。你想做什么? -
我想输出 @ 符号之前的所有内容,但我不太确定如何在不使用 not 的情况下做到这一点。我想我假设如果你有 OR 和 AND 你也可以使用 NOT
-
错误非常明显。您不能对字符串应用布尔运算。哪一部分让您感到困惑?
-
忘记
NOT。它不像你想象的那样工作。您应该阅读您尝试使用的语言元素的文档。您需要首先隔离@字符之前的子字符串。现在您的代码没有引用'@'字符或其 ASCII 表示,因此这是执行步骤 1 的障碍。一旦您在@之前隔离子字符串,那么您可以获得该子字符串的第一个和最后两个字符使用字符串函数。 -
我发现这是一个非常有趣的想法:让位域确定要保留字符串中的哪些位置,并首先在位域上使用逻辑运算符(与、非、或、异或)。我一直在使用与解析器类似的东西,但结果更像是一个拼接数组(复制函数的参数)