/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. */ package org.apache.smscserver.util; import java.util.Map; /** * <strong>Internal class, do not use directly.</strong> * * String utility methods. * * @author hceylan */ public class StringUtils { /** * This method is used to insert HTML block dynamically * * @param source the HTML code to be processes * @param bReplaceNl if true '\n' will be replaced by <br> * @param bReplaceTag if true '<' will be replaced by < and * '>' will be replaced by > * @param bReplaceQuote if true '\"' will be replaced by " */ public final static String formatHtml(String source, boolean bReplaceNl, boolean bReplaceTag, boolean bReplaceQuote) { StringBuilder sb = new StringBuilder(); int len = source.length(); for (int i = 0; i < len; i++) { char c = source.charAt(i); switch (c) { case '\"': if (bReplaceQuote) { sb.append("""); } else { sb.append(c); } break; case '<': if (bReplaceTag) { sb.append("<"); } else { sb.append(c); } break; case '>': if (bReplaceTag) { sb.append(">"); } else { sb.append(c); } break; case '\n': if (bReplaceNl) { if (bReplaceTag) { sb.append("<br>"); } else { sb.append("<br>"); } } else { sb.append(c); } break; case '\r': break; case '&': sb.append("&"); break; default: sb.append(c); break; } } return sb.toString(); } /** * Pad string object */ public final static String pad(String src, char padChar, boolean rightPad, int totalLength) { int srcLength = src.length(); if (srcLength >= totalLength) { return src; } int padLength = totalLength - srcLength; StringBuilder sb = new StringBuilder(padLength); for (int i = 0; i < padLength; ++i) { sb.append(padChar); } if (rightPad) { return src + sb.toString(); } else { return sb.toString() + src; } } /** * Replace string. */ public final static String replaceString(String source, Map<String, Object> args) { int startIndex = 0; int openIndex = source.indexOf('{', startIndex); if (openIndex == -1) { return source; } int closeIndex = source.indexOf('}', startIndex); if ((closeIndex == -1) || (openIndex > closeIndex)) { return source; } StringBuilder sb = new StringBuilder(); sb.append(source.substring(startIndex, openIndex)); while (true) { String key = source.substring(openIndex + 1, closeIndex); Object val = args.get(key); if (val != null) { sb.append(val); } startIndex = closeIndex + 1; openIndex = source.indexOf('{', startIndex); if (openIndex == -1) { sb.append(source.substring(startIndex)); break; } closeIndex = source.indexOf('}', startIndex); if ((closeIndex == -1) || (openIndex > closeIndex)) { sb.append(source.substring(startIndex)); break; } sb.append(source.substring(startIndex, openIndex)); } return sb.toString(); } /** * Replace string */ public final static String replaceString(String source, Object[] args) { int startIndex = 0; int openIndex = source.indexOf('{', startIndex); if (openIndex == -1) { return source; } int closeIndex = source.indexOf('}', startIndex); if ((closeIndex == -1) || (openIndex > closeIndex)) { return source; } StringBuilder sb = new StringBuilder(); sb.append(source.substring(startIndex, openIndex)); while (true) { String intStr = source.substring(openIndex + 1, closeIndex); int index = Integer.parseInt(intStr); sb.append(args[index]); startIndex = closeIndex + 1; openIndex = source.indexOf('{', startIndex); if (openIndex == -1) { sb.append(source.substring(startIndex)); break; } closeIndex = source.indexOf('}', startIndex); if ((closeIndex == -1) || (openIndex > closeIndex)) { sb.append(source.substring(startIndex)); break; } sb.append(source.substring(startIndex, openIndex)); } return sb.toString(); } /** * This is a string replacement method. */ public final static String replaceString(String source, String oldStr, String newStr) { StringBuilder sb = new StringBuilder(source.length()); int sind = 0; int cind = 0; while ((cind = source.indexOf(oldStr, sind)) != -1) { sb.append(source.substring(sind, cind)); sb.append(newStr); sind = cind + oldStr.length(); } sb.append(source.substring(sind)); return sb.toString(); } /** * Get byte array from hex string */ public final static byte[] toByteArray(String hexString) { int arrLength = hexString.length() >> 1; byte buff[] = new byte[arrLength]; for (int i = 0; i < arrLength; i++) { int index = i << 1; String digit = hexString.substring(index, index + 2); buff[i] = (byte) Integer.parseInt(digit, 16); } return buff; } /** * Get hex string from byte array */ public final static String toHexString(byte[] res) { StringBuilder sb = new StringBuilder(res.length << 1); for (byte re : res) { String digit = Integer.toHexString(0xFF & re); if (digit.length() == 1) { sb.append('0'); } sb.append(digit); } return sb.toString().toUpperCase(); } }