【问题标题】:How do I know if part of a given string is a string in a Arraylist<String>?我如何知道给定字符串的一部分是否是 Arraylist<String> 中的字符串?
【发布时间】:2015-11-15 18:13:47
【问题描述】:

我正在做家庭作业,我很难弄清楚如何确定给定字符串的一部分是否是字符串的Arraylist 中的字符串。

给定字符串的示例:

loveaspd
asdhouseaspd

字符串数组列表:love, house, home, dog, amuse, question...

我曾尝试使用 contains,但我意识到一旦我必须检查每个字母,它就无济于事了。

例如:loveaspr

我的程序应该检查单词love,所以它会查看第一个字母是否匹配并转到第二个字母。所以,读完love这个词后,输出会是:

love exists.

程序将检查字母a。在我的arrayList 中有一个带有字母a 的单词,所以它会检查第二个字母,并会发现第一个字母是a 而第二个字母是s 的地方没有这样的单词。那么a 将被拒绝,s 将被拒绝。

将检查字符串的最后一部分(注意我的arrayList中有单词问题,因此程序会检查第一个和第二个字母,然后将两者一起拒绝)。

因此,我的输出应该是:

love exists.
a rejected.
s rejected.
pr rejected.

问题是我不知道如何检查 ArrayList 的每个单词中的每个字母。我不是要求有人为我编写作业。我正在寻找可以说出我应该(具体地)研究哪个主题或举例说明我的问题以完成任务(明天到期)的人。

提前致谢,

伊恩·皮埃尔。

【问题讨论】:

  • 到目前为止您尝试了哪些方法,您在哪里卡住了?你不能指望社区只为你解决问题
  • 问题是我真的不知道从哪里开始。我尝试使用 string.contains 但它对我没有帮助,因为我必须逐字检查。
  • 使用如果 list.contains("word") 将返回 true 或 false 就是这样

标签: java string arraylist


【解决方案1】:

这样下去

ArrayList<String> ar = new ArrayList<String>();
        for (String a : ar) {
            if (a.contentEquals("any_string_here") || a.equalsIgnoreCase("any_string_here")) {
                System.out.println("Found");
            }
        }

【讨论】:

  • 感谢您的帮助,但我认为这对我没有帮助。我刚刚编辑了我的问题。你能再读一遍吗?
  • @IanPierre 你能给出正确输入和预期输出的样本吗...?
  • 我的字典,例如:house、love、home、problem、amuse。给定输入:loveprhomedc 预期输出:love 存在,pr 不存在,home 存在,d 不存在,c 不存在。 (请注意,程序应该用第一个字母,然后是第二个字母来搜索单词,就像我会说的真正的字典一样)
  • @IanPierre 抱歉,但没有得到那个。稍微解释一下
  • 我打错了,抱歉。
【解决方案2】:

一种选择是迭代列表,并使用String.indexOf() 来确定部分匹配。这是一个例子:

  private static String match(List<String> mots, String searchPhrase) {
        for(String mot : mots) {
            if(searchPhrase.indexOf(mot) >= 0) {
                return mot;
            }
        }
        return "No Match Found.";
    }

    //Test
    public static void main(String[] args) {
        List<String> mots = new ArrayList<>();
        mots.add("un");
        mots.add("deux");
        mots.add("trois");
        String searchPhrase = "lesdeuxchats";
        System.out.println( match(mots,searchPhrase) );  //Output = "deux"
    } 

【讨论】:

【解决方案3】:
String s;
ArrayList<String> list= new ArrayList<String>();
int i,j;

for(i=0;i<s.length;i++)
{
    for(j=i+1;j<s.length;j++){
        if(list.contains(s.substring(i,j)){
            System.out.println("The list contains "+s.substring(i,j));
        }
    }
}

子字符串 (http://www.tutorialspoint.com/java/java_string_substring.htm) 是获取部分原始字符串的方法。

【讨论】:

    【解决方案4】:
    public class SO {       
        public static void main(String[] args) {
            ArrayList<String> al = new ArrayList<String>();
            al.add("ABC");
            al.add("DEF");
            al.add("GHI");
            al.add("JKL");
            al.add("MNO");
    
            for (String arrList : al) {
                if(arrList == "GHI"){
                    System.out.println("Found");
                }
            }
            }       
        }
    

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2011-09-19
      • 2019-12-29
      • 2013-04-21
      • 1970-01-01
      • 2011-12-15
      • 2013-04-14
      • 1970-01-01
      • 2013-02-20
      相关资源
      最近更新 更多