【问题标题】:Using substring to find a string使用子字符串查找字符串
【发布时间】:2015-12-06 13:05:54
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 您究竟想如何使用子字符串?做什么?子字符串用于提取字符串的一部分。如果您使用的是字符串数组,那么它对您的项目并没有真正的用处。
  • 例如,我想从字符串中提取巧克力,然后找到它的位置,以便我可以用其他东西替换它。我想创建一个方法来从我的字符串中提取垃圾食品(这不是方法中的数组,只是一个文本字符串)。
  • @JDoe - 巧克力从何而来?我的意思是你有蔬菜、水果等的单词列表吗?
  • System.out.println(str.replaceAll("chocolate", "LOST" ));
  • 是的,我有一个存储在数组中的单词列表。 @Naruto 不用replace方法可以做到吗?

标签: java


【解决方案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 );

【讨论】:

    【解决方案2】:

    所以它不是“字符串数组”,请编辑它。 我必须猜你的代码?

    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);
    

    这里有你需要的一切:)

    【讨论】:

    • 比我晚 8 分钟给出和我一样的答案,我不知道有什么意义。
    • 因为他想训练,而不是复制/粘贴。我给了你+1,你现在停止哭泣吗?
    【解决方案3】:

    您真正想要做的是迭代数组并验证数组的每个值是否包含对垃圾食品的提及;方法 contains 更适合。

    布尔 junkFoodValidator(String[] 数组) { 对于(字符串一个:数组{ if(a.contains("chocolate") || a.contains("candy") { //你可以在这里添加更多验证 返回真; } } 返回假; }

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 2013-10-22
        • 1970-01-01
        • 2011-07-13
        • 2015-12-31
        相关资源
        最近更新 更多