2017-10-05 39 views
-5

基本上,我有一个输入,我想验证用户输入是否使用了3个或更多来自qwerty键盘布局的连续字母。我的意思是Q-W-E或Y-U-I-O-P。首先,我将用户输入存储在一个字符串变量中,并使用ansiLowerCase函数将输入转换为小写。我搞砸了将qwerty布局声明为一个常量字符串,并使用strscan函数,但无济于事。任何帮助将不胜感激,谢谢。如何验证连续字母是否已从qwerty键盘输入到delphi控制台应用程序中?

+3

有前两天贴在这里,后来删除了几乎相同的Q值。这是你设置的课程任务吗? – MartynA

+0

其实我试图扩展我从编码挑战小册子中做的一个程序。它来自这个网站:https://drive.google.com/file/d/0B1pbdiI9H_RiUkl0cXcySUJCOTg/view,并且是任务24 –

回答

0

尝试这样:

function HasThreeConsecutiveLetters(const Str: string): Boolean; 
const 
    QwertyLetters: array[0..2] of string = (
    'QWERTYUIOP', 
    'ASDFGHJKL', 
    'ZXCVBNM' 
); 
var 
    I, J, K: Integer; 
    S: String; 
begin 
    Result := False; 
    S := AnsiUpperCase(Str); 
    for I := 1 to Length(S) do 
    begin 
    for J := Low(QwertyLetters) to High(QwertyLetters) do 
    begin 
     K := Pos(S[I], QwertyLetters[J]); 
     if (K <> 0) and 
     ((K+2) <= Length(QwertyLetters[J])) and 
     (Copy(S, I, 3) = Copy(QwertyLetters[J], K, 3)) then 
     begin 
     Result := True; 
     Exit; 
     end; 
    end; 
    end; 
end; 

然后,你可以这样做:

var 
    input: string; 
begin 
    input := ...; 
    if HasThreeConsecutiveLetters(input) then 
    ... 
    else 
    ... 
end; 
相关问题