1 // Copyright 2006 The Closure Library Authors. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS-IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 /** 16 * @fileoverview Utilities for string manipulation. 17 */ 18 19 20 /** 21 * Namespace for string utilities 22 */ 23 goog.provide('goog.string'); 24 25 26 /** 27 * Does simple python-style string substitution. 28 * subs("foo%s hot%s", "bar", "dog") becomes "foobar hotdog". 29 * @param {string} str The string containing the pattern. 30 * @param {...*} var_args The items to substitute into the pattern. 31 * @return {string} A copy of {@code str} in which each occurrence of 32 * {@code %s} has been replaced an argument from {@code var_args}. 33 */ 34 goog.string.subs = function(str, var_args) { 35 var splitParts = str.split('%s'); 36 var returnString = ''; 37 38 var subsArguments = Array.prototype.slice.call(arguments, 1); 39 while (subsArguments.length && 40 // Replace up to the last split part. We are inserting in the 41 // positions between split parts. 42 splitParts.length > 1) { 43 returnString += splitParts.shift() + subsArguments.shift(); 44 } 45 46 return returnString + splitParts.join('%s'); // Join unused '%s' 47 }; 48