簡體   English   中英

Java中的indexOf(“ @”)方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM