2017-10-05 76 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; 
相關問題