我想在java中检查一个单词,如" fga"存在于" abc"和" lmp"或不。 对于这个例子,我的单词范围从" fga"开始。 " FGB" " fbc" ..." lmo" " LMP&#34 ;.我不能使用包含或子串因为我必须在它们之间找到这些,比如第一个字是" fga"第二个是" xyz",现在是一个词" lac"介于两者之间,所以我必须从程序上检查它是否位于它们之间。
第一个词是" abc" ,第二个词是" fgh" ,现在如果我的搜索词是"的 DEE "然后返回true。从第一个单词到第二个单词(" abc"" abd"" abe" ..." abz"" aca"& #34; 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);
}
答案 0 :(得分: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
}
或者您可以将源字符串拆分为单词并分析&#34; keyWord&#34;的位置。在单词数组中。或做其他事情:有很多方法可以做到这一点......
<强>更新强>
无论如何你可以&#34;手动&#34;实现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
}
但它没用。
答案 1 :(得分:0)
这是简单的Java解决方案:
String input = "fga fgb fgc"; //Your long string
if(input.contains("fga"))
{
//When true do that
} else
{
//Else do that
}