Android Unicode Convert unicodePreservingIndex(String str, int index)

Here you can find the source of unicodePreservingIndex(String str, int index)

Description

Normalizes index such that it respects Unicode character boundaries in str .

License

Apache License

Parameter

Parameter Description
str the String
index the index to be normalized

Return

a normalized index that does not split a Unicode character

Declaration

public static int unicodePreservingIndex(String str, int index) 

Method Source Code

//package com.java2s;
/**//from  ww  w  .ja  va 2  s.  c  o m
 * Copyright (c) 2000, Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

public class Main {
    /**
     * Normalizes {@code index} such that it respects Unicode character
     * boundaries in {@code str}.
     *
     * <p>If {@code index} is the low surrogate of a unicode character,
     * the method returns {@code index - 1}. Otherwise, {@code index} is
     * returned.
     *
     * <p>In the case in which {@code index} falls in an invalid surrogate pair
     * (e.g. consecutive low surrogates, consecutive high surrogates), or if
     * if it is not a valid index into {@code str}, the original value of
     * {@code index} is returned.
     *
     * @param str the String
     * @param index the index to be normalized
     * @return a normalized index that does not split a Unicode character
     */
    public static int unicodePreservingIndex(String str, int index) {
        if (index > 0 && index < str.length()) {
            if (Character.isHighSurrogate(str.charAt(index - 1))
                    && Character.isLowSurrogate(str.charAt(index))) {
                return index - 1;
            }
        }
        return index;
    }
}

Related

  1. zenkakuToHankaku(String value)
  2. ToDBC(String input)
  3. unicodePreservingIndex(String paramString, int paramInt)
  4. fullWidthToHalfWidth(String s)
  5. getEncodedSize(String value)
  6. halfWidthToFullWidth(String s)
  7. bytes2StringUNICODE(byte[] buf, int offset, int length, boolean bigEndian)