2015-09-30 29 views
0

Hy!找到字符串中前兩個單詞的最佳方法是什麼?例如,我的字符串是一個像下面這樣的地址:十字鍵十三,我只需要'十字鍵'。我應該計算字符串中的單詞還是有更好的解決方案?如何才能找到字符串中的前兩個字

我可以輕鬆獲得第一個和最後一個單詞。我是Delphi的新手。感謝您的建議。

procedure SampleForm.ButtonClick(Sender: TObject); 
var 
    st: string; 
    myString : string; 
    C: integer; 
begin 
    st := Cross Keys st 13; 
    C:=LastDelimiter(' ',st); 

    myString := Copy(st,1,pos(' ',st)-1); 
    mystring:=Copy(st,C+1,length(st)-C); 
+1

請看第一個答案在這裏:

uses HTTPUtil; function GetFirstNWrods(const str: string; const delim: string; Numwords: Integer): string; var Tokenizer: IStringTokenizer; begin Result := ''; Tokenizer := StringTokenizer(str, delim); while (Tokenizer.hasMoreTokens) and (Numwords > 0) do begin Result := Result + Tokenizer.nextToken + delim; Dec(Numwords) end; System.Delete(Result, Length(Result) - Length(delim) + 1, Length(delim)); end; 

如何調用該函數實例 http://stackoverflow.com/questions/2625707/split-a-string -in-an-an-array-of-strings-based-on-a-delimiter – Hampus

+2

如果你能得到第一個單詞,那麼你可以通過簡單地重複你爲第一個單詞所做的任何事情而獲得第二個單詞。你的問題要求比你有更好的東西。請描述你的意思是「更好」。 –

+2

如果只有一個詞怎麼辦? –

回答

0

範圍是德爾福XE所以string.split不起作用。相反,您可以使用IStringTokenizerHTTPUtil。就像這樣:

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    Caption := GetFirstNWrods('1 2 3 4', ' ', 2); 
end; 
+1

非常感謝!這就是我所尋找的 – Steve88

0
procedure TForm9.Button1Click(Sender: TObject); 
begin 
ShowMessage(someWord('first second and ...',1)); // show: first 
ShowMessage(someWord('first second and ...',2)); //show: second 
end; 

function TForm9.someWord(sir: string; oneWord: integer): string; 
var 
    myArray: TArray<string>; 
begin 
    myArray := sir.Split([' ']); //myArray it's an Tstring of Words from sir 
    case oneWord of 
    1: 
     result := myArray[low(myArray)]; // result is first elemnt of myArray; low(myArray)=0 
    2: 
     begin 
     if high(myArray) > 0 then  // high(myArray) index of last element of myArray 
      result := myArray[low(myArray) + 1] // result is second element of myArray 
     else 
      result := ''; 
     end; 
    end; 
end; 
相關問題