Here you can find the source of truncate(String originalString, int size)
public static String truncate(String originalString, int size)
//package com.java2s; /******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution.//from www . j a v a 2 s .c om * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink * dminsky - added countOccurrencesOf(Object, List) API * 08/23/2010-2.2 Michael O'Brien * - 323043: application.xml module ordering may cause weaving not to occur causing an NPE. * warn if expected "_persistence_*_vh" method not found * instead of throwing NPE during deploy validation. ******************************************************************************/ public class Main { /** * If the size of the original string is larger than the passed in size, * this method will remove the vowels from the original string. * * The removal starts backward from the end of original string, and stops if the * resulting string size is equal to the passed in size. * * If the resulting string is still larger than the passed in size after * removing all vowels, the end of the resulting string will be truncated. */ public static String truncate(String originalString, int size) { if (originalString.length() <= size) { //no removal and truncation needed return originalString; } String vowels = "AaEeIiOoUu"; StringBuilder newStringBufferTmp = new StringBuilder( originalString.length()); //need to remove the extra characters int counter = originalString.length() - size; for (int index = (originalString.length() - 1); index >= 0; index--) { //search from the back to the front, if vowel found, do not append it to the resulting (temp) string! //i.e. if vowel not found, append the chararcter to the new string buffer. if (vowels.indexOf(originalString.charAt(index)) == -1) { newStringBufferTmp.append(originalString.charAt(index)); } else { //vowel found! do NOT append it to the temp buffer, and decrease the counter counter--; if (counter == 0) { //if the exceeded characters (counter) of vowel haven been removed, the total //string size should be equal to the limits, so append the reversed remaining string //to the new string, break the loop and return the shrunk string. StringBuilder newStringBuffer = new StringBuilder(size); newStringBuffer.append(originalString.substring(0, index)); //need to reverse the string //bug fix: 3016423. append(BunfferString) is jdk1.4 version api. Use append(String) instead //in order to support jdk1.3. newStringBuffer.append(newStringBufferTmp.reverse() .toString()); return newStringBuffer.toString(); } } } //the shrunk string still too long, revrese the order back and truncate it! return newStringBufferTmp.reverse().toString().substring(0, size); } }