java:如何检查StringBuilder字符以查看它是否包含与来自数组的新字符串请求相同的字符?

时间:2010-07-08 11:00:21

标签: java

我想检查Java StringBuilder对象是否包含字符。

例如,我有一个数组中的食物列表{apple,pear,orange,peach,cherry},我想在StringBuilder中添加随机数量的这些食物类型。

如何检查StringBuilder是否包含字符?

11 个答案:

答案 0 :(得分:9)

StringBuilder类没有contains()方法,String方法。因此,您可以使用StringBuilder使用toString()来构建字符串。然后在其上调用contains(),检查它是否包含该字符或字符串。

示例:

stringBuilder.toString().contains(characterYouWantToCheck)

答案 1 :(得分:7)

StringBuilder类没有contains()方法,但它有indexOf()方法。当找不到子字符串时,indexOf()方法返回-1

示例:

stringBuilder.indexOf(charactersYouWantToCheck)!=-1

答案 2 :(得分:3)

当然可以通过迭代检查字符串(例如使用indexOf()),但是我会在这个特定的实例中使用Set来添加水果(如果它已经存在则不再添加) ,一旦你完成添加水果,将Set转换为字符串,例如

Set<String> fruits = new HashSet<String>();
for (String fruit: fruitSource) {
    fruits.add(fruit);
}
StringBuilder sb = new StringBuilder();
for (String fruit: fruits) {
    sb.append(fruit);
    sb.append(", ");
}
return sb.toString();

答案 3 :(得分:2)

另一种选择是创建所有选项的List<String>,并使用Collections.shuffle随机置换列表。然后,您可以将前n个元素连接在一起。

由于Collections.shuffle和前n个元素连接在一起需要线性时间,因此整个过程应该采用线性时间。

答案 4 :(得分:1)

你不应该“检查”任何事情来做这件事,你应该这样做,以便首先不会添加重复项。要做到这一点:

  1. List<String>个选项开始
    • 复制列表
    • 在结果中添加随机元素
    • 删除该元素。
    • 返回3,直到您添加了任意数量的元素,或者不再有任何元素

答案 5 :(得分:0)

import java.util.Random;

public class Test {
    public static void main(String args[]) {
        String[] fruits = { "apple", "pear", "orange", "peach", "cherry" };

        StringBuilder sb = new StringBuilder("Some fruits: apple");

        Random r = new Random();
        int N = 3;
        for (int i = 0; i < N; i++) {
            String toAdd;
            do {
                toAdd = fruits[r.nextInt(fruits.length)];
            } while (sb.indexOf(toAdd) != -1);

            sb.append(", " + toAdd);
        }

        System.out.println(sb);
    }    
}

输出:

Some fruits: apple, pear, orange, peach

但我同意迈克尔·博格沃德的看法,一遍又一遍地检查使用索引是一件坏事。

答案 6 :(得分:0)

一种简单的方法类似于Marc van Kempen的解决方案,但更小。

Set<String> fruits = new HashSet<String>();
StringBuilder sb = new StringBuilder();
for (String fruit: fruits) {
    if(fruits.add(fruit)){
        sb.append(fruit);
        sb.append(", ");
    }
}
return sb.toString();

答案 7 :(得分:0)

strb2.indexOf(String.valueOf(strb1.charAt(i))

strb2strb1StringBuilder类的对象。如果该字母存在,它将返回其索引,否则为-1.

答案 8 :(得分:0)

Java StringBuilder没有包含方法 因此,您可以检查StringBuilder中是否包含字符串或字符,如下所示:

StingBuilder sb = new StringBuilder("apple, pear, orange, peach, cherry");
if(sb.indexOf("someFruit") == -1) {
   //you can insert
} else {
   // do something
}

答案 9 :(得分:0)

//StringBuilder object

    StringBuilder sb = new StringBuilder("One Two Three");
    
    System.out.println( contains(sb, "One") );
    System.out.println( contains(sb, "Two") );
    System.out.println( contains(sb, "Five") );

输出:

true
true
false

答案 10 :(得分:0)

StringBuilder 没有 contains() 方法,但它有 indexOf() 方法。因此,您可以检查字符的索引,如果返回 -1,则该字符不在 StringBuilder 中。

StringBuilder sb = new StringBuilder();

if(sb.indexOf(CharacterYouWantToCheck) != -1){
   //sb contains character
}