试图从包含多个单词的字符串中获取第一个字符,其中第一个字符可以是表情符号(Android)

时间:2016-02-05 07:40:27

标签: java android string substring

我需要获取字符串的第一个字符,目前正在使用的是:

String firstCharacter = getTitle().substring(0, 1);

其中getTitle()返回一个String,可以包含多个单词和表情符号,如果第一个字符是表情符号,当我显示firstCharacter而不是表情符号时,我会使用substring问号,因为使用substring我会删除表情符号字符。

我想做的是:

  • 如果第一个单词是表情符号检索并将其分配给firstCharacter而不使用substring;

  • 如果第一个单词是实际单词,请使用我正在执行的substring;

我怎么可能这样做?

2 个答案:

答案 0 :(得分:1)

Android现在通过EmojiCompat

支持Emojis

EmojiCompat用于支持Android中的Emojis。您可以通过下载或将其打包在应用程序中进行初始化。


// Initialize with your desired config 
EmojiCompat.init(BundledEmojiCompatConfig(context))

// Check if EmojiCompat was successfully loaded
if (EmojiCompat.get().loadState == EmojiCompat.LOAD_STATE_SUCCEEDED) {
    EmojiCompat.get().hasEmojiGlyph(yourString)
}


旧答案:

可以找到Emojis范围here

所以,这会导致(未经测试):

if(getTitle().substring(0,5)
    == ("/[\u2190-\u21FF] | [\u2600-\u26FF] | [\u2700-\u27BF] | 
          [\u3000-\u303F] | [\u1F300-\u1F64F] | [\u1F680-\u1F6FF]/g")){
    firstCharacter = getTitle().substring(0,5);
} else{
    firstCharacter = getTitle().substring(0,1);
}

答案 1 :(得分:0)

只需使用String.codePointAt()

new String(Character.toChars(getTitle().codePointAt(0)))