Replaces a String with another String inside a larger String, once.
A null
reference passed to this method is a no-op.
replaceOnce(null, *, *) = null replaceOnce("", *, *) = "" replaceOnce("any", null, *) = "any" replaceOnce("any", *, null) = "any" replaceOnce("any", "", *) = "any" replaceOnce("aba", "a", null) = "aba" replaceOnce("aba", "a", "") = "ba" replaceOnce("aba", "a", "z") = "zba"
public class Main { public static void main(String[] argv) throws Exception { String text = "CSS CSS HTML HTML"; String searchString = "CSS"; String replacement = "C++"; System.out.println(replaceOnce(text, searchString, replacement)); }//from w w w . j av a2s . c om public static String replaceOnce(String text, String searchString, String replacement) { return replace(text, searchString, replacement, 1); } public static String replace(String text, String searchString, String replacement) { return replace(text, searchString, replacement, -1); } public static String replace(String text, String searchString, String replacement, int max) { if (isEmpty(text) || isEmpty(searchString) || replacement == null || max == 0) { return text; } int start = 0; int end = text.indexOf(searchString, start); if (end == -1) { return text; } int replLength = searchString.length(); int increase = replacement.length() - replLength; increase = (increase < 0 ? 0 : increase); increase *= (max < 0 ? 16 : (max > 64 ? 64 : max)); StringBuffer buf = new StringBuffer(text.length() + increase); while (end != -1) { buf.append(text.substring(start, end)).append(replacement); start = end + replLength; if (--max == 0) { break; } end = text.indexOf(searchString, start); } buf.append(text.substring(start)); return buf.toString(); } public static boolean isEmpty(String str) { return str == null || str.length() == 0; } } /* * 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. */