LoginSignup
6
8

More than 5 years have passed since last update.

Androidでサロゲートペアを削除する

Last updated at Posted at 2015-08-03

Androidでサロゲートペア文字列を排除するコード

サーバー側でutf8mb4に対応しておらずAndroid側で絵文字などを排除したい場合に。


package jp.hoge.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * マルチバイト文字
 * Created by y_hoshi on 2015/07/03.
 */
public class MultiByteString {

    /**
     * サロゲートペアが含まれる文字を削除した文字列をレスポンスする
     * @param src
     * @return
     */
    static public String deleteSurrogateChar(String src){
        Pattern pattern = Pattern.compile("[\\u0000-\\uFFFF]*");
        Matcher matcher = pattern.matcher(src);
        String outString = "";

        if(!matcher.matches()){
            for(int i =0; src.length() > i; i++){
                if(MultiByteString.isSurrogate(src.substring(i, i+1))){
                    i++;
                }
                else{
                    outString = outString + src.charAt(i);
                }
            }

        }
        else{
            outString = src;
        }

        return outString;
    }

    /**
     * サロゲートペアが含まれているかチェックする
     * @param text
     * @return
     */
    static public boolean isSurrogate(String text) {
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i) >= '\uD800' && text.charAt(i) < ('\uDFFF' + 1)) {
                return true;
            }
        }
        return false;
    }

}

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8