我想检查Java StringBuilder
对象是否包含字符。
例如,我有一个数组中的食物列表{apple,pear,orange,peach,cherry},我想在StringBuilder中添加随机数量的这些食物类型。
如何检查StringBuilder是否包含字符?
答案 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)
你不应该“检查”任何事情来做这件事,你应该这样做,以便首先不会添加重复项。要做到这一点:
List<String>
个选项开始
答案 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))
strb2
和strb1
是StringBuilder
类的对象。如果该字母存在,它将返回其索引,否则为-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
}