[英]indexOf(“@”) method in Java
為什么總是返回-1? 這與“ @”是注釋符號有什么關系嗎?
如何搜索以'@'開頭的子字符串的首次出現?
UserMentionEntity[] userMentionEntities = status.getUserMentionEntities();
for (UserMentionEntity ume : userMentionEntities) {
final String mention = ume.getText();
int mentionStart = text.indexOf("@" + mention);
int mentionEnd = mentionStart + mention.length();
ss.setSpan(new ForegroundColorSpan(Color.parseColor(COLOR)), mentionStart, mentionEnd + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
顯然,提及開始是-1。 我正在使用twitter4j庫。
樣品:
text: RT @Cornerstone_TMC Thank you @ukgdos at sa lahat ng nag-abang kanina kay @yengpluggedin! #SeenZoned @academyofrocksg… http://t.co/rsLqjlZJgg
mention: ukgdos
不。您的字符串不包含您認為的內容,
String mention = "not";
String text = "I do @not think so.";
int mentionStart = text.indexOf("@" + mention);
System.out.printf("%d%n", mentionStart);
版畫
5
編輯
根據您現在提供的文字和提及
String text = "RT @Cornerstone_TMC Thank you @ukgdos "
+ "at sa lahat ng nag-abang kanina kay @yengpluggedin! "
+ "#SeenZoned @academyofrocksg… http://t.co/rsLqjlZJgg";
String mention = "ukgdos";
int mentionStart = text.indexOf("@" + mention);
System.out.printf("%d%n", mentionStart);
版畫
30
我已解決我的應用程序的問題。
UserMentionEntity[] userMentionEntities = status.getUserMentionEntities();
for (UserMentionEntity ume : userMentionEntities) {
final String mention = ume.getText().toLowerCase();
int mentionStart = text.toLowerCase().indexOf("@" + mention);
int mentionEnd = mentionStart + mention.length();
ss.setSpan(new ForegroundColorSpan(Color.parseColor(COLOR)), mentionStart, mentionEnd + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
我注意到Twitter允許您更改提及內容。
@yengPLUGGEDin
可以顯示為@yengpluggedin
以便其中的代碼中的ume.getText()
返回正確的屏幕名稱,而text
按原樣包含tweet文本。
我不太確定為什么我的示例輸入也失敗了。 也許沒有,但是在執行打印之前的下一次失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.