使用substring查找字符串

时间:2015-12-06 13:05:55

标签: java

我想检查一串杂货是否包含与垃圾食品相关的任何词语(例如巧克力'糖果'薯片')然后我想把这些词改成水果/蔬菜。

如何在不知道单词位置的情况下使用substring / indexOf方法,因为它将是用户输入。

感谢。

4 个答案:

答案 0 :(得分:1)

您可以随时使用String.replace(),但如果您必须使用String.substring(),那么通常采用的方式如下:

    String junk = "chocolate";
    String food = "some chocolate bar";
    int index = food.indexOf( junk );
    if( index != -1 )
    {
        int n = index + junk.length();
        food = food.substring( 0, index ) + "banana" + food.substring( n );
    }
    System.out.println( food );

答案 1 :(得分:1)

所以它不是"字符串数组",plz编辑它。 我不得不猜你的代码?

String s = "potato, chocolate, strawberrie"
s.replace("chocolate", "apple");

如果你想训练自己,你仍然可以使用子串。 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

您将需要:

String choco = "chocolate";
int pos = s.indexOf(choco); //returns 8
int size = choco.length;
s = s.substring(0, pos) + "apple" + s.substring(pos+size, s.length);

以下是您需要的一切:)

答案 2 :(得分:0)

你真正想做的是迭代数组并验证数组的每个值是否包含在垃圾食品中;该方法包含更适合。

boolean junkFoodValidator(String [] array){     for(String a:array {       if(a.contains(" chocolate")|| a.contains(" candy"){//你可以在这里添加更多有效数据          返回true;        }     }     返回false;    }

答案 3 :(得分:0)

我不认为substring是一种“好”的方法,就像你查看API的字符串一样,没有一个子字符串方法接受字符串中字符索引以外的参数。但是你仍然需要子串!

假设您仍希望以将数组转储为字符串的方式执行此操作,则String API的更合适的方法是indexOf()。参数是您要查找的字符串,该方法将返回第一次出现的索引,如果未找到则返回-1。从indexOf(),然后获得字符串的初始索引后,您可以使用substring来获取字符串。对于substring方法中的第二个参数,即结束索引,您只需将您要查找的String的长度减去1即可添加到起始索引。

如果你想从一个更面向对象的方法做到这一点,我建议为每个String创建一个对象,然后你可以自定义该类对象,让一个参数保存String所属的项目类型。然后,使用比较器,您可以遍历数组查找项目类型。我在this question中提供了有关如何执行此操作的深入答案。

给出其中一个镜头,如果你仍然卡住或遇到困难,请评论我的答案,我可以使用一些代码添加编辑。但是你先尝试是很重要的!