首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在安卓TextView中去除表情符号(肤色)字符

在安卓TextView中去除表情符号(肤色)字符
EN

Stack Overflow用户
提问于 2016-07-19 17:53:20
回答 1查看 340关注 0票数 2

我正在尝试显示一些文本,其中可以包含在应用程序的iOS版本上创建的表情符号。当我们在Android上渲染这些字符时,我在表情符号旁边看到了x。

有没有办法扩展Android TextView,以便在渲染文本视图时忽略肤色字符。

我曾尝试创建一个正则表达式,将它们替换为空字符,但Android Studio抱怨说,正则表达式无效,因为不支持十六进制字符语法,而且看起来还去掉了其他转义字符

代码语言:javascript
运行
复制
replaceAll("[\\x{1f3fb}-\\x{1f3ff}]", "")
EN

回答 1

Stack Overflow用户

发布于 2016-09-19 18:49:45

我想我终于想通了。

代码语言:javascript
运行
复制
public class CustomTextView extends AppCompatTextView {

  private static final String FITZPATRICK_PREFIX = "\uD83C";

  public CustomTextView(Context context) {
      this(context, null);
  }

  public CustomTextView(final Context context, final AttributeSet attrs) {
    this(context, attrs, 0);
  }

  public CustomTextView(final Context context, final AttributeSet attrs, final int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }

  @Override
  public void setText(final CharSequence text, final BufferType type) {
    super.setText(stripFitzpatrickCharacters(text == null ? "" : text.toString()), type);
  }

  public static String stripFitzpatrickCharacters(@NonNull final String string) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && string.contains(FITZPATRICK_PREFIX)) {
        final String[] parts = string.split(FITZPATRICK_PREFIX);
        final StringBuilder builder = new StringBuilder();
        builder.append(parts[0]);
        for (int i = 1; i < parts.length; i++) {
            builder.append(parts[i].substring(1));
        }
        return builder.toString();
    } else {
        return string;
    }
}

}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38455118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档