如何检查字符串是否包含子字符串?

时间:2017-03-25 18:48:15

标签: android string

我得到两个字符串并尝试检查字符串A是否包含字符串B.但问题是我收到错误方法包含(字符串)未定义类型StringBuilder 。这个错误是什么?以及如何解决此问题?

// 1) get saved link
    SharedPreferences preferences = PreferenceManager
            .getDefaultSharedPreferences(getBaseContext());
    String LINK = preferences.getString("random54", "");

    // 2) get text from savedlinks.txt to string
    String sdcard = Environment.getExternalStorageDirectory() + "/X ADB/";
    File file = new File(sdcard, "savedlinks.txt");
    StringBuilder text = new StringBuilder();
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;
        while ((line = br.readLine()) != null) {
            text.append(line);
            text.append('\n');
        }
        br.close();
    } catch (IOException e) {
    }

    // 3) check if link already present in the .txt file or not
    if (text.contains(LINK)) {
        // DONT SAVE CAUSE DUPLICATE
    } else {
        // SAVE LINK IN HISTORY

5 个答案:

答案 0 :(得分:2)

文字是StringBuilder,而不是String

if (text.toString().contains(LINK))

答案 1 :(得分:1)

text.toString().contains(LINK)

答案 2 :(得分:1)

StringBuilder类没有contains()。

使用toString()首先转换为字符串。

text.toString().contains(LINK)

答案 3 :(得分:0)

你可以在任何java对象上使用toString()方法来获取它的字符串表示,你甚至可以在任何类中覆盖这个方法来提供你自己的toString实现。

在你的情况下:

text.toString().contains(LINK)

将完成工作(这里使用StringBuilder的toString方法,它返回表示此序列中数据的字符串)

注意:并非所有toString都返回一个预期的字符串,特别是对于数组和复杂的对象

答案 4 :(得分:0)

例如
如果我们想知道stringvalue是否包含Spotify网址:

boolean contains = stringvalue.toLowerCase().contains("https://open.spotify.com/");