我有这个,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
。
答案 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");
但这也是错误的,因为它会返回int
(String
中的位置),因此会出现不匹配错误。
您需要在"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);