2016-11-09 9 views
-1

"abc"と "lmp"の間に "fga"のような1つの単語が存在するかどうかjavaにチェックインします。 この例では、単語の範囲は "fga" "fgb" "fbc" ... "lmo" "lmp"から始まります。私は最初の単語が "fga"で、2番目が "xyz"のように、これらの間にこれらを見つけなければならないので、containsまたはsubstringを使用することはできません。間に単語 "lac"があるので、プログラム的にチェックしなければなりません。ない。1つの単語が2つの範囲または単語の間に存在することをどのように確認できますか?

最初の単語は「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を編集しました。私は部分文字列またはindexofをしたくない。私は "cng"のような単語が "abc"と "agf"のどちらかにあるかどうかチェックしたい。文字ごとに –

+0

@ user3332319なぜあなたは文字で1文字ずつ行きたいですか?要件をよりよく説明する必要があります。 (文字列の入力と結果の例を追加する)。 –

+0

たとえば、最初の単語が「abc」で2番目が「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 
} 
関連する問題