Java tutorial
//package com.java2s; /* * Copyright (C) 2016 Jared Rummler <jared.rummler@gmail.com> * * 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 { /** * Convert a string to a sequence of ASCII or XML numeric character references. * * @param s * a java string (encoded in UTF-16) * @return a string representing a sequence of numeric character reference or * ASCII characters */ public static String toNCRefs(String s) { StringBuffer sb = new StringBuffer(); if (s != null) { for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if ((c >= 32) && (c < 127)) { if (c == '<') { sb.append("<"); } else if (c == '>') { sb.append(">"); } else if (c == '&') { sb.append("&"); } else { sb.append(c); } } else { sb.append(charToNCRef(c)); } } } return sb.toString(); } /** * Convert a single unicode scalar value to an XML numeric character * reference. If in the BMP, four digits are used, otherwise 6 digits are used. * * @param c * a unicode scalar value * @return a string representing a numeric character reference */ public static String charToNCRef(int c) { StringBuffer sb = new StringBuffer(); for (int i = 0, nDigits = (c > 0xFFFF) ? 6 : 4; i < nDigits; i++, c >>= 4) { int d = c & 0xF; char hd; if (d < 10) { hd = (char) ((int) '0' + d); } else { hd = (char) ((int) 'A' + (d - 10)); } sb.append(hd); } return "&#x" + sb.reverse() + ";"; } }