2016-11-09 54 views
-1

我想在java中檢查「abc」和「lmp」之間是否存在「fga」之類的單詞。 對於這個例子我的單詞範圍從「fga」「fgb」「fbc」...「lmo」「lmp」開始。因爲我不得不使用包含或子串,因爲我必須在兩者之間找到它們,比如第一個單詞是「fga」,第二個是「xyz」,現在一個單詞「lac」位於之間,所以我必須通過編程來檢查它是否位於它們之間或不。我如何檢查一個單詞是否存在於兩個範圍或單詞之間?

第一個字是「ABC」和第二是「FGH」,現在如果我的搜索詞是「迪伊」,然後返回true。從第一個單詞到第二個單詞(「abc」「abd」「abe」..「abz」「aca」「acb」...「fgg」「fgh」)如果我的單詞存在,那麼它將返回true。我沒有一個字符串包含所有這些字。我只有2個單詞和一個搜索詞 現在我想檢查我的搜索詞是否存在於這些範圍內。

我試圖與循環,但它是一個漫長的過程

{ 
     char firstLetter = firstWord[0]; 
     char secondLetter = firstWord[1]; 
     char thirdLetter = firstWord[2]; 

     char i = 'a', j = 'a', k = 'a'; 


     do 
     { 
      for (i = firstLetter; i <= 'z'; i++) 
      { 
       for (j = secondLetter; j <= 'z'; j++) 
       { 
        for (k = thirdLetter; k <= 'z'; k++) 
        { 
         if (k == secondWord[2]) 
         { 
          break; 
         } 
         if (!foundOnPage && text.equalsIgnoreCase("" + i + "" + j + "" + k)) 
         { 
          foundOnPage = true; 
          pageNo = WordPageNo; 
          break; 
         } 
        } 
        thirdLetter = 'a'; 
        if (j == secondWord[1]) 
         break; 
        if (foundOnPage) 
         break; 
       } 
       secondLetter = 'a'; 

       if (i == secondWord[0] || foundOnPage) 
        break; 
      } 
      firstLetter = 'a'; 
      if (foundOnPage) 
       break; 
     } 
     while ((String.valueOf(i) + String.valueOf(j) + String.valueOf(k)).equalsIgnoreCase(secondWord.toString()) || !foundOnPage); 

    } 
+2

,這遠你已經嘗試...?向我們展示你的一些代碼! – pleft

+0

提示:查找'String.contains()'和'String.subString()'。這就是你需要解決你的謎題。 –

回答

1

有很多方法可以做到這一點:

String sourceString = "fga fgb fbc... lmo lmp"; 
String beginWord = "abc"; 
String endWord = "lmp"; 
String keyWord = "fga"; 
int ixBegin = sourceString.indexOf(beginWord); 
int ixEnd = sourceString.indexOf(endWord); 
int ixKey = sourceString.indexOf(keyWord); 

if (ixKey > ixBegin && ixKey < ixEnd) { 
    // do your magic here 
} 

或者可以在源字符串分割單詞和分析「關鍵字」的位置在單詞數組中。或做其他事:有很多方法可以做到這一點...

更新

無論如何你可以在「手動」實現indexOf()/pos()/substring()方法或做些事情類似:

String sourceString = "fga fgb fbc... lmo lmp"; 
String beginWord = "abc"; 
String endWord = "lmp"; 
String keyWord = "fga"; 
char currSourceChar; 
int ixCharBeginWord = 0; 
int posBeginWord = -1; 
int ixCharEndWord = 0; 
int posEndWord = -1; 
int ixCharKeyWord = 0; 
int posKeyWord = -1; 

for (int ixChar = 0; ixChar < sourceString.length(); ixChar++) { 
    currSourceChar = sourceString.charAt(ixChar); 

    // found pos of "beginWord" 
    if (currSourceChar == beginWord.charAt(ixCharBeginWord)) { 
    ixCharBeginWord++; 
    } else { 
    ixCharBeginWord = 0; 
    } 

    if (ixCharBeginWord == beginWord.length() && ixChar < sourceString.length()-1 && sourceString.charAt(ixChar+1) == 0x20) { 
     posBeginWord = ixChar - beginWord.length(); 
    } 

    // same way as above found pos of "endWord" 

    // found as above pos of "endWord" 

} 

if (posKeyWord > posBeginWord && posKeyWord < posEndWord) { 
    // do your magic here 
} 

但它的無用。

+0

剛剛編輯我的qusetion。我不想要substring或indexof。我想檢查像「cng」這樣的詞是否在「abc」和「agf」之間。逐字符 –

+0

@ user3332319爲什麼你想逐字符號去?你需要更好地解釋你的需求。 (添加字符串輸入和結果的示例)。 –

+0

例如第一個單詞是「abc」,第二個單詞是「fgh」,現在如果我的搜索詞是「dee」,則返回true。從第一個單詞到第二個單詞(「abc」「abd」「abe」..「abz」「aca」「acb」...「fgg」「fgh」)如果我的單詞存在,那麼它將返回true。我沒有一個字符串包含所有這些字。我只有2個單詞和一個搜索詞 –

0

這是簡單的Java解決方案:

String input = "fga fgb fgc"; //Your long string 
if(input.contains("fga")) 
{ 
//When true do that 
} else 
{ 
    //Else do that 
} 
相關問題