Android使用indexOf

时间:2013-11-23 16:36:10

标签: java android string

我有这个,tweet.title是一个等于I love burgers.

的字符串
        CharSequence i = tweet.title.indexOf(Integer.valueOf("I"));

        SpannableString WordtoSpan = new SpannableString(i);        
        WordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        holder.txtTitle.setText(WordtoSpan);

现在我从它Type mismatch: cannot convert from int to CharSequence

收到此错误

我想在字符串中找到I

4 个答案:

答案 0 :(得分:4)

String.indexOf返回一个int而不是CharSequence。此外,您无法使用Integer.valueOf()获取I的索引。

    int i = tweet.title.indexOf("I");

如果你想让“我”回来做这个:

    int i = tweet.title.indexOf("I");
    String s = tweet.title.substring(i, i + 1);

已编辑:我在此代码中修复了一些错误。

答案 1 :(得分:3)

代码(已测试并正常工作)

CharSequence i = tweet.title.indexOf(Integer.valueOf("I"));

应该是

int index = tweet.title.indexOf("I"); // find int position of "I"

// set to be the String of where "I" is to plus 1 of that position
CharSequence i = tweet.title.substring(index, index + 1);

// Alternative to substring, you could use charAt, which returns a char
CharSequence i = Character.toString(tweet.title.charAt(index));

解释

indexOf(String)会返回int所在位置的String 位置
您将Integer.valueOf("I")作为String添加到indexOf(String)

Integer.valueOf(String)String转换为Integer。为什么您要indexOf(String) Integer,为什么要尝试将"I"转换为Integer

你打算这样做:CharSequence i = tweet.title.indexOf("I");但这也是错误的,因为它会返回intString中的位置),因此会出现不匹配错误。

您需要在"I"中找到tweet.title的位置,以便tweet.title.indexOf("I")。然后将CharSequence设置为该位置的tweet.title,直到该位置+1(这样您只得到一个字符I)。

答案 2 :(得分:2)

String.contains()检查字符串是否包含指定的char值序列 String.indexOf()返回指定字符或子字符串第一次出现的字符串中的索引(此方法有4种变体)

答案 3 :(得分:1)

您可以使用String,因为它实现了CharSequence接口。请参阅docs

因为你只想要一个字母,你可以在索引处获取char并从中生成一个String:

    int i = tweet.title.indexOf("I");
    String letter = Character.toString(tweet.title.charAt(i));

    SpannableString wordtoSpan = new SpannableString(letter);        
    wordtoSpan.setSpan(
            new ForegroundColorSpan(Color.RED), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

如果你想获得更多字符串,你可以使用String.subString(int beginIndex, int endIndex)方法。

F.e:你想得到“汉堡”:

    int i = tweet.title.indexOf("b");
    String sub = title.subString(i, i + 6);
    SpannableString wordtoSpan = new SpannableString(sub);        
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);