blob: 370a329df3f06614ed72c0b42616926e0a1bf284 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:36 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>StringUtil (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="StringUtil (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":41,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":41,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":41,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/StringUtil.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../freemarker/template/utility/StandardCompress.html" title="class in freemarker.template.utility"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/template/utility/StringUtil.html" target="_top">Frames</a></li>
<li><a href="StringUtil.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.template.utility</div>
<h2 title="Class StringUtil" class="title">Class StringUtil</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>freemarker.template.utility.StringUtil</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">StringUtil</span>
extends java.lang.Object</pre>
<div class="block">Some text related utilities.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncCompatibility</a></span></code>
<div class="block">Used as the argument of <a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(String, JsStringEncCompatibility, JsStringEncQuotation)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.JsStringEncQuotation.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncQuotation</a></span></code>
<div class="block">Used as the argument of <a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(String, JsStringEncCompatibility, JsStringEncQuotation)</code></a>.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#StringUtil--">StringUtil</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#capitalize-java.lang.String-">capitalize</a></span>(java.lang.String&nbsp;s)</code>&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#chomp-java.lang.String-">chomp</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Removes a line-break from the end of the string (if there's any).</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.util.Locale</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#deduceLocale-java.lang.String-">deduceLocale</a></span>(java.lang.String&nbsp;input)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#emptyToNull-java.lang.String-">emptyToNull</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Converts a 0-length string to null, leaves the string as is otherwise.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#ftlQuote-java.lang.String-">ftlQuote</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Creates a <em>quoted</em> FTL string literal from a string, using escaping where necessary.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#FTLStringLiteralDec-java.lang.String-">FTLStringLiteralDec</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">FTL string literal decoding.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#FTLStringLiteralEnc-java.lang.String-">FTLStringLiteralEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Escapes a string according the FTL string literal escaping rules; it doesn't add the quotation marks.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#FTLStringLiteralEnc-java.lang.String-char-">FTLStringLiteralEnc</a></span>(java.lang.String&nbsp;s,
char&nbsp;quotation)</code>
<div class="block">Escapes a string according the FTL string literal escaping rules, assuming the literal is quoted with
<code>quotation</code>; it doesn't add the quotation marks itself.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#getYesNo-java.lang.String-">getYesNo</a></span>(java.lang.String&nbsp;s)</code>&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static java.util.regex.Pattern</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#globToRegularExpression-java.lang.String-">globToRegularExpression</a></span>(java.lang.String&nbsp;glob)</code>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#globToRegularExpression-java.lang.String-boolean-"><code>globToRegularExpression(String, boolean)</code></a> with <code>caseInsensitive</code> argument <code>false</code>.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static java.util.regex.Pattern</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#globToRegularExpression-java.lang.String-boolean-">globToRegularExpression</a></span>(java.lang.String&nbsp;glob,
boolean&nbsp;caseInsensitive)</code>
<div class="block">Creates a regular expression from a glob.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#HTMLEnc-java.lang.String-">HTMLEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Use <a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>XHTMLEnc(String)</code></a> instead, because it escapes apostrophe-quote too.</span></div>
</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isBackslashEscapedFTLIdentifierCharacter-char-">isBackslashEscapedFTLIdentifierCharacter</a></span>(char&nbsp;c)</code>
<div class="block">Tells if a character can occur in an FTL identifier if it's preceded with a backslash.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isFTLIdentifierPart-char-">isFTLIdentifierPart</a></span>(char&nbsp;c)</code>
<div class="block">Tells if a character can occur in an FTL identifier expression (without escaping) as other than the first
character.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isFTLIdentifierStart-char-">isFTLIdentifierStart</a></span>(char&nbsp;c)</code>
<div class="block">Tells if a character can occur on the beginning of an FTL identifier expression (without escaping).</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-">isTrimmableToEmpty</a></span>(char[]&nbsp;text)</code>
<div class="block">Tells if <code>String.trim()</code> will return a 0-length string for the <code>String</code> equivalent of the argument.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-int-">isTrimmableToEmpty</a></span>(char[]&nbsp;text,
int&nbsp;start)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-"><code>isTrimmableToEmpty(char[])</code></a>, but acts on a sub-array that starts at <code>start</code> (inclusive index).</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-int-int-">isTrimmableToEmpty</a></span>(char[]&nbsp;text,
int&nbsp;start,
int&nbsp;end)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-"><code>isTrimmableToEmpty(char[])</code></a>, but acts on a sub-array that starts at <code>start</code> (inclusive index)
and ends at <code>end</code> (exclusive index).</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#isXMLID-java.lang.String-">isXMLID</a></span>(java.lang.String&nbsp;name)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Don't use this outside FreeMarker; it's name if misleading, and it doesn't follow the XML specs.</span></div>
</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#javaScriptStringEnc-java.lang.String-">javaScriptStringEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JavaScript string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, JsStringEncCompatibility.JAVA_SCRIPT, null)</code></a>.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#javaStringEnc-java.lang.String-">javaStringEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Escapes the <code>String</code> with the escaping rules of Java language
string literals, so it's safe to insert the value into a string literal.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#javaStringEnc-java.lang.String-boolean-">javaStringEnc</a></span>(java.lang.String&nbsp;s,
boolean&nbsp;quote)</code>
<div class="block">Escapes the <code>String</code> with the escaping rules of Java language string literals, and then if <code>quote</code> is
true, it also adds quotation marks before and after it.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jQuote-java.lang.Object-">jQuote</a></span>(java.lang.Object&nbsp;obj)</code>
<div class="block">Converts the parameter with <code>toString</code> (if it's not <code>null</code>) and passes it to
<a href="../../../freemarker/template/utility/StringUtil.html#jQuote-java.lang.String-"><code>jQuote(String)</code></a>.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jQuote-java.lang.String-">jQuote</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Quotes string as Java Language string literal.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.Object-">jQuoteNoXSS</a></span>(java.lang.Object&nbsp;obj)</code>
<div class="block">Converts the parameter with <code>toString</code> (if not
<code>null</code>)and passes it to <a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.String-"><code>jQuoteNoXSS(String)</code></a>.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.String-">jQuoteNoXSS</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.String-"><code>jQuoteNoXSS(String)</code></a> but also escapes <code>'&lt;'</code>
as <code>\</code><code>u003C</code>.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jsonStringEnc-java.lang.String-">jsonStringEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JSON string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, JsStringEncCompatibility.JSON, null)</code></a>.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-boolean-">jsStringEnc</a></span>(java.lang.String&nbsp;s,
boolean&nbsp;json)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
<div class="block"><span class="deprecationComment">Use <a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-"><code>jsStringEnc(String, JsStringEncCompatibility)</code></a> instead.</span></div>
</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-">jsStringEnc</a></span>(java.lang.String&nbsp;s,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncCompatibility</a>&nbsp;compatibility)</code>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JSON or JavaScript string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, compatibility, null)</code></a>.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-">jsStringEnc</a></span>(java.lang.String&nbsp;s,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncCompatibility</a>&nbsp;compatibility,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncQuotation.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncQuotation</a>&nbsp;quotation)</code>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JavaScript or a JSON string literal, and if the 3rd
argument is <code>true</code>, also adds quotation marks around it.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#leftPad-java.lang.String-int-">leftPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength)</code>
<div class="block">Pads the string at the left with spaces until it reaches the desired
length.</div>
</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#leftPad-java.lang.String-int-char-">leftPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength,
char&nbsp;filling)</code>
<div class="block">Pads the string at the left with the specified character until it reaches
the desired length.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#leftPad-java.lang.String-int-java.lang.String-">leftPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength,
java.lang.String&nbsp;filling)</code>
<div class="block">Pads the string at the left with a filling pattern until it reaches the
desired length.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#matchesName-java.lang.String-java.lang.String-java.lang.String-freemarker.core.Environment-">matchesName</a></span>(java.lang.String&nbsp;qname,
java.lang.String&nbsp;nodeName,
java.lang.String&nbsp;nsURI,
<a href="../../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</code>&nbsp;</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code>static java.util.Map</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#parseNameValuePairList-java.lang.String-java.lang.String-">parseNameValuePairList</a></span>(java.lang.String&nbsp;s,
java.lang.String&nbsp;defaultValue)</code>
<div class="block">Parses a name-value pair list, where the pairs are separated with comma,
and the name and value is separated with colon.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#replace-java.lang.String-java.lang.String-java.lang.String-">replace</a></span>(java.lang.String&nbsp;text,
java.lang.String&nbsp;oldSub,
java.lang.String&nbsp;newSub)</code>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#replace-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-"><code>replace(String, String, String, boolean, boolean)</code></a> with two <code>false</code> parameters.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#replace-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-">replace</a></span>(java.lang.String&nbsp;text,
java.lang.String&nbsp;oldsub,
java.lang.String&nbsp;newsub,
boolean&nbsp;caseInsensitive,
boolean&nbsp;firstOnly)</code>
<div class="block">Replaces all occurrences of a sub-string in a string.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#rightPad-java.lang.String-int-">rightPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength)</code>
<div class="block">Pads the string at the right with spaces until it reaches the desired
length.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#rightPad-java.lang.String-int-char-">rightPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength,
char&nbsp;filling)</code>
<div class="block">Pads the string at the right with the specified character until it
reaches the desired length.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#rightPad-java.lang.String-int-java.lang.String-">rightPad</a></span>(java.lang.String&nbsp;s,
int&nbsp;minLength,
java.lang.String&nbsp;filling)</code>
<div class="block">Pads the string at the right with a filling pattern until it reaches the
desired length.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#RTFEnc-java.lang.String-">RTFEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">Rich Text Format encoding (does not replace line breaks).</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#RTFEnc-java.lang.String-java.io.Writer-">RTFEnc</a></span>(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#RTFEnc-java.lang.String-"><code>RTFEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#split-java.lang.String-char-">split</a></span>(java.lang.String&nbsp;s,
char&nbsp;c)</code>
<div class="block">Splits a string at the specified character.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code>static java.lang.String[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#split-java.lang.String-java.lang.String-boolean-">split</a></span>(java.lang.String&nbsp;s,
java.lang.String&nbsp;sep,
boolean&nbsp;caseInsensitive)</code>
<div class="block">Splits a string at the specified string.</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#toLowerABC-int-">toLowerABC</a></span>(int&nbsp;n)</code>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#toUpperABC-int-"><code>toUpperABC(int)</code></a>, but produces lower case result, like <code>"ab"</code>.</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#toUpperABC-int-">toUpperABC</a></span>(int&nbsp;n)</code>
<div class="block">Converts <code>1</code>, <code>2</code>, <code>3</code> and so forth to <code>"A"</code>, <code>"B"</code>, <code>"C"</code> and so fort.</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code>static char[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#trim-char:A-">trim</a></span>(char[]&nbsp;cs)</code>
<div class="block">Behaves exactly like <code>String.trim()</code>, but works on arrays.</div>
</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#tryToString-java.lang.Object-">tryToString</a></span>(java.lang.Object&nbsp;object)</code>
<div class="block">Tries to run <code>toString()</code>, but if that fails, returns a
<code>"[com.example.SomeClass.toString() failed: " + e + "]"</code> instead.</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#URLEnc-java.lang.String-java.lang.String-">URLEnc</a></span>(java.lang.String&nbsp;s,
java.lang.String&nbsp;charset)</code>
<div class="block">URL encoding (like%20this) for query parameter values, path <em>segments</em>, fragments; this encodes all
characters that are reserved anywhere.</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#URLPathEnc-java.lang.String-java.lang.String-">URLPathEnc</a></span>(java.lang.String&nbsp;s,
java.lang.String&nbsp;charset)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#URLEnc-java.lang.String-java.lang.String-"><code>URLEnc(String, String)</code></a> but doesn't escape the slash character (<code>/</code>).</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#versionStringToInt-java.lang.String-">versionStringToInt</a></span>(java.lang.String&nbsp;version)</code>
<div class="block">Converts a version number string to an integer for easy comparison.</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-">XHTMLEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">XHTML Encoding.</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-java.io.Writer-">XHTMLEnc</a></span>(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>XHTMLEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-">XMLEnc</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">XML Encoding.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-java.io.Writer-">XMLEnc</a></span>(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)</code>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-"><code>XMLEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XMLEncNA-java.lang.String-">XMLEncNA</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">XML encoding without replacing apostrophes.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XMLEncNQG-java.lang.String-">XMLEncNQG</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">XML encoding without replacing apostrophes and quotation marks and
greater-thans (except in <code>]]&gt;</code>).</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../freemarker/template/utility/StringUtil.html#XMLEncQAttr-java.lang.String-">XMLEncQAttr</a></span>(java.lang.String&nbsp;s)</code>
<div class="block">XML encoding for attribute values quoted with <tt>"</tt> (not with <tt>'</tt>!).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="StringUtil--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>StringUtil</h4>
<pre>public&nbsp;StringUtil()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="HTMLEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>HTMLEnc</h4>
<pre>@Deprecated
public static&nbsp;java.lang.String&nbsp;HTMLEnc(java.lang.String&nbsp;s)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>XHTMLEnc(String)</code></a> instead, because it escapes apostrophe-quote too.</span></div>
<div class="block">HTML encoding (does not convert line breaks and apostrophe-quote).
Replaces all '&gt;' '&lt;' '&amp;' and '"' with entity reference, but not "'" (apostrophe-quote).
The last is not escaped as back then when this was written some user agents didn't understood
"&amp;apos;" nor "&amp;#39;".</div>
</li>
</ul>
<a name="XMLEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XMLEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;XMLEnc(java.lang.String&nbsp;s)</pre>
<div class="block">XML Encoding.
Replaces all '&gt;' '&lt;' '&amp;', "'" and '"' with entity reference</div>
</li>
</ul>
<a name="XMLEnc-java.lang.String-java.io.Writer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XMLEnc</h4>
<pre>public static&nbsp;void&nbsp;XMLEnc(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)
throws java.io.IOException</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-"><code>XMLEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="XHTMLEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XHTMLEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;XHTMLEnc(java.lang.String&nbsp;s)</pre>
<div class="block">XHTML Encoding.
Replaces all '&gt;' '&lt;' '&amp;', "'" and '"' with entity reference
suitable for XHTML decoding in common user agents (including legacy
user agents, which do not decode "&amp;apos;" to "'", so "&amp;#39;" is used
instead [see http://www.w3.org/TR/xhtml1/#C_16])</div>
</li>
</ul>
<a name="XHTMLEnc-java.lang.String-java.io.Writer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XHTMLEnc</h4>
<pre>public static&nbsp;void&nbsp;XHTMLEnc(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)
throws java.io.IOException</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#XHTMLEnc-java.lang.String-"><code>XHTMLEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="XMLEncNA-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XMLEncNA</h4>
<pre>public static&nbsp;java.lang.String&nbsp;XMLEncNA(java.lang.String&nbsp;s)</pre>
<div class="block">XML encoding without replacing apostrophes.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-"><code>XMLEnc(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="XMLEncQAttr-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XMLEncQAttr</h4>
<pre>public static&nbsp;java.lang.String&nbsp;XMLEncQAttr(java.lang.String&nbsp;s)</pre>
<div class="block">XML encoding for attribute values quoted with <tt>"</tt> (not with <tt>'</tt>!).
Also can be used for HTML attributes that are quoted with <tt>"</tt>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-"><code>XMLEnc(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="XMLEncNQG-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>XMLEncNQG</h4>
<pre>public static&nbsp;java.lang.String&nbsp;XMLEncNQG(java.lang.String&nbsp;s)</pre>
<div class="block">XML encoding without replacing apostrophes and quotation marks and
greater-thans (except in <code>]]&gt;</code>).</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/template/utility/StringUtil.html#XMLEnc-java.lang.String-"><code>XMLEnc(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="RTFEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RTFEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;RTFEnc(java.lang.String&nbsp;s)</pre>
<div class="block">Rich Text Format encoding (does not replace line breaks).
Escapes all '\' '{' '}'.</div>
</li>
</ul>
<a name="RTFEnc-java.lang.String-java.io.Writer-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RTFEnc</h4>
<pre>public static&nbsp;void&nbsp;RTFEnc(java.lang.String&nbsp;s,
java.io.Writer&nbsp;out)
throws java.io.IOException</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#RTFEnc-java.lang.String-"><code>RTFEnc(String)</code></a>, but writes the result into a <code>Writer</code>.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="URLEnc-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>URLEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;URLEnc(java.lang.String&nbsp;s,
java.lang.String&nbsp;charset)
throws java.io.UnsupportedEncodingException</pre>
<div class="block">URL encoding (like%20this) for query parameter values, path <em>segments</em>, fragments; this encodes all
characters that are reserved anywhere.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.UnsupportedEncodingException</code></dd>
</dl>
</li>
</ul>
<a name="URLPathEnc-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>URLPathEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;URLPathEnc(java.lang.String&nbsp;s,
java.lang.String&nbsp;charset)
throws java.io.UnsupportedEncodingException</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#URLEnc-java.lang.String-java.lang.String-"><code>URLEnc(String, String)</code></a> but doesn't escape the slash character (<code>/</code>).
This can be used to encode a path only if you know that no folder or file name will contain <code>/</code>
character (not in the path, but in the name itself), which usually stands, as the commonly used OS-es don't
allow that.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.UnsupportedEncodingException</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.21</dd>
</dl>
</li>
</ul>
<a name="FTLStringLiteralEnc-java.lang.String-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FTLStringLiteralEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;FTLStringLiteralEnc(java.lang.String&nbsp;s,
char&nbsp;quotation)</pre>
<div class="block">Escapes a string according the FTL string literal escaping rules, assuming the literal is quoted with
<code>quotation</code>; it doesn't add the quotation marks itself.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>quotation</code> - Either <code>'"'</code> or <code>'\''</code>. It's assumed that the string literal whose part we calculate is
enclosed within this kind of quotation mark. Thus, the other kind of quotation character will not be
escaped in the result.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="FTLStringLiteralEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FTLStringLiteralEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;FTLStringLiteralEnc(java.lang.String&nbsp;s)</pre>
<div class="block">Escapes a string according the FTL string literal escaping rules; it doesn't add the quotation marks. As this
method doesn't know if the string literal is quoted with reuglar quotation marks or apostrophe quute, it will
escape both.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/template/utility/StringUtil.html#FTLStringLiteralEnc-java.lang.String-char-"><code>FTLStringLiteralEnc(String, char)</code></a></dd>
</dl>
</li>
</ul>
<a name="FTLStringLiteralDec-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FTLStringLiteralDec</h4>
<pre>public static&nbsp;java.lang.String&nbsp;FTLStringLiteralDec(java.lang.String&nbsp;s)
throws <a href="../../../freemarker/core/ParseException.html" title="class in freemarker.core">ParseException</a></pre>
<div class="block">FTL string literal decoding.
\\, \", \', \n, \t, \r, \b and \f will be replaced according to
Java rules. In additional, it knows \g, \l, \a and \{ which are
replaced with &lt;, &gt;, &amp; and { respectively.
\x works as hexadecimal character code escape. The character
codes are interpreted according to UCS basic plane (Unicode).
"f\x006Fo", "f\x06Fo" and "f\x6Fo" will be "foo".
"f\x006F123" will be "foo123" as the maximum number of digits is 4.
All other \X (where X is any character not mentioned above or End-of-string)
will cause a ParseException.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - String literal <em>without</em> the surrounding quotation marks</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String with all escape sequences resolved</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../freemarker/core/ParseException.html" title="class in freemarker.core">ParseException</a></code> - if there string contains illegal escapes</dd>
</dl>
</li>
</ul>
<a name="deduceLocale-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deduceLocale</h4>
<pre>public static&nbsp;java.util.Locale&nbsp;deduceLocale(java.lang.String&nbsp;input)</pre>
</li>
</ul>
<a name="capitalize-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>capitalize</h4>
<pre>public static&nbsp;java.lang.String&nbsp;capitalize(java.lang.String&nbsp;s)</pre>
</li>
</ul>
<a name="getYesNo-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getYesNo</h4>
<pre>public static&nbsp;boolean&nbsp;getYesNo(java.lang.String&nbsp;s)</pre>
</li>
</ul>
<a name="split-java.lang.String-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>split</h4>
<pre>public static&nbsp;java.lang.String[]&nbsp;split(java.lang.String&nbsp;s,
char&nbsp;c)</pre>
<div class="block">Splits a string at the specified character.</div>
</li>
</ul>
<a name="split-java.lang.String-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>split</h4>
<pre>public static&nbsp;java.lang.String[]&nbsp;split(java.lang.String&nbsp;s,
java.lang.String&nbsp;sep,
boolean&nbsp;caseInsensitive)</pre>
<div class="block">Splits a string at the specified string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sep</code> - The string that separates the items of the resulting array. Since 2.3.28, if this is 0 length, then
each character will be a separate item in the array.</dd>
</dl>
</li>
</ul>
<a name="replace-java.lang.String-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre>public static&nbsp;java.lang.String&nbsp;replace(java.lang.String&nbsp;text,
java.lang.String&nbsp;oldSub,
java.lang.String&nbsp;newSub)</pre>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#replace-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-"><code>replace(String, String, String, boolean, boolean)</code></a> with two <code>false</code> parameters.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="replace-java.lang.String-java.lang.String-java.lang.String-boolean-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre>public static&nbsp;java.lang.String&nbsp;replace(java.lang.String&nbsp;text,
java.lang.String&nbsp;oldsub,
java.lang.String&nbsp;newsub,
boolean&nbsp;caseInsensitive,
boolean&nbsp;firstOnly)</pre>
<div class="block">Replaces all occurrences of a sub-string in a string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>text</code> - The string where it will replace <code>oldsub</code> with
<code>newsub</code>.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>String The string after the replacements.</dd>
</dl>
</li>
</ul>
<a name="chomp-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>chomp</h4>
<pre>public static&nbsp;java.lang.String&nbsp;chomp(java.lang.String&nbsp;s)</pre>
<div class="block">Removes a line-break from the end of the string (if there's any).</div>
</li>
</ul>
<a name="emptyToNull-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>emptyToNull</h4>
<pre>public static&nbsp;java.lang.String&nbsp;emptyToNull(java.lang.String&nbsp;s)</pre>
<div class="block">Converts a 0-length string to null, leaves the string as is otherwise.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - maybe <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="jQuote-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jQuote</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jQuote(java.lang.Object&nbsp;obj)</pre>
<div class="block">Converts the parameter with <code>toString</code> (if it's not <code>null</code>) and passes it to
<a href="../../../freemarker/template/utility/StringUtil.html#jQuote-java.lang.String-"><code>jQuote(String)</code></a>.</div>
</li>
</ul>
<a name="jQuote-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jQuote</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jQuote(java.lang.String&nbsp;s)</pre>
<div class="block">Quotes string as Java Language string literal.
Returns string <code>"null"</code> if <code>s</code>
is <code>null</code>.</div>
</li>
</ul>
<a name="jQuoteNoXSS-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jQuoteNoXSS</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jQuoteNoXSS(java.lang.Object&nbsp;obj)</pre>
<div class="block">Converts the parameter with <code>toString</code> (if not
<code>null</code>)and passes it to <a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.String-"><code>jQuoteNoXSS(String)</code></a>.</div>
</li>
</ul>
<a name="jQuoteNoXSS-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jQuoteNoXSS</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jQuoteNoXSS(java.lang.String&nbsp;s)</pre>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#jQuoteNoXSS-java.lang.String-"><code>jQuoteNoXSS(String)</code></a> but also escapes <code>'&lt;'</code>
as <code>\</code><code>u003C</code>. This is used for log messages to prevent XSS
on poorly written Web-based log viewers.</div>
</li>
</ul>
<a name="ftlQuote-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ftlQuote</h4>
<pre>public static&nbsp;java.lang.String&nbsp;ftlQuote(java.lang.String&nbsp;s)</pre>
<div class="block">Creates a <em>quoted</em> FTL string literal from a string, using escaping where necessary. The result either
uses regular quotation marks (UCS 0x22) or apostrophe-quotes (UCS 0x27), depending on the string content.
(Currently, apostrophe-quotes will be chosen exactly when the string contains regular quotation character and
doesn't contain apostrophe-quote character.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The value that should be converted to an FTL string literal whose evaluated value equals to <code>s</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="isFTLIdentifierStart-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFTLIdentifierStart</h4>
<pre>public static&nbsp;boolean&nbsp;isFTLIdentifierStart(char&nbsp;c)</pre>
<div class="block">Tells if a character can occur on the beginning of an FTL identifier expression (without escaping).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="isFTLIdentifierPart-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFTLIdentifierPart</h4>
<pre>public static&nbsp;boolean&nbsp;isFTLIdentifierPart(char&nbsp;c)</pre>
<div class="block">Tells if a character can occur in an FTL identifier expression (without escaping) as other than the first
character.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="isBackslashEscapedFTLIdentifierCharacter-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isBackslashEscapedFTLIdentifierCharacter</h4>
<pre>public static&nbsp;boolean&nbsp;isBackslashEscapedFTLIdentifierCharacter(char&nbsp;c)</pre>
<div class="block">Tells if a character can occur in an FTL identifier if it's preceded with a backslash. For example, <code>"-"</code>
is a such character (as you can have an identifier like <code>foo\-bar</code> in FTL), but <code>"f"</code> is not, as
it needn't be, and can't be escaped.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.31</dd>
</dl>
</li>
</ul>
<a name="javaStringEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>javaStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;javaStringEnc(java.lang.String&nbsp;s)</pre>
<div class="block">Escapes the <code>String</code> with the escaping rules of Java language
string literals, so it's safe to insert the value into a string literal.
The resulting string will not be quoted.
See more details at <a href="../../../freemarker/template/utility/StringUtil.html#javaStringEnc-java.lang.String-boolean-"><code>javaStringEnc(String, boolean)</code></a>, as this just calls that with <code>false</code> as the
2nd argument.</div>
</li>
</ul>
<a name="javaStringEnc-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>javaStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;javaStringEnc(java.lang.String&nbsp;s,
boolean&nbsp;quote)</pre>
<div class="block">Escapes the <code>String</code> with the escaping rules of Java language string literals, and then if <code>quote</code> is
true, it also adds quotation marks before and after it.
<p>All characters under UCS code point 0x20 will be escaped.
Where they have no dedicated escape sequence in Java, they will
be replaced with hexadecimal escape (<tt>\</tt><tt>u<i>XXXX</i></tt>).</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../freemarker/template/utility/StringUtil.html#jQuote-java.lang.String-"><code>jQuote(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="javaScriptStringEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>javaScriptStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;javaScriptStringEnc(java.lang.String&nbsp;s)</pre>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JavaScript string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, JsStringEncCompatibility.JAVA_SCRIPT, null)</code></a>.</div>
</li>
</ul>
<a name="jsonStringEnc-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jsonStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jsonStringEnc(java.lang.String&nbsp;s)</pre>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JSON string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, JsStringEncCompatibility.JSON, null)</code></a>.</div>
</li>
</ul>
<a name="jsStringEnc-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jsStringEnc</h4>
<pre>@Deprecated
public static&nbsp;java.lang.String&nbsp;jsStringEnc(java.lang.String&nbsp;s,
boolean&nbsp;json)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-"><code>jsStringEnc(String, JsStringEncCompatibility)</code></a> instead.</span></div>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JSON or JavaScript string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, json ? JsStringEncCompatibility.JSON : JsStringEncCompatibility.JAVA_SCRIPT, null)</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jsStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jsStringEnc(java.lang.String&nbsp;s,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncCompatibility</a>&nbsp;compatibility)</pre>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JSON or JavaScript string literal; for more see
<a href="../../../freemarker/template/utility/StringUtil.html#jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-"><code>jsStringEnc(s, compatibility, null)</code></a>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.32</dd>
</dl>
</li>
</ul>
<a name="jsStringEnc-java.lang.String-freemarker.template.utility.StringUtil.JsStringEncCompatibility-freemarker.template.utility.StringUtil.JsStringEncQuotation-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>jsStringEnc</h4>
<pre>public static&nbsp;java.lang.String&nbsp;jsStringEnc(java.lang.String&nbsp;s,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncCompatibility</a>&nbsp;compatibility,
<a href="../../../freemarker/template/utility/StringUtil.JsStringEncQuotation.html" title="enum in freemarker.template.utility">StringUtil.JsStringEncQuotation</a>&nbsp;quotation)</pre>
<div class="block">Escapes a <code>String</code> to be safely insertable into a JavaScript or a JSON string literal, and if the 3rd
argument is <code>true</code>, also adds quotation marks around it.
If instead the caller ensures that the quotation marks are there, then in JSON mode (2nd argument), the quotation
marks must be <code>"</code>, not <code>'</code>, because for JSON we won't escape <code>'</code>.
<p>The escaping rules guarantee that if the inside of the JavaScript/JSON string literal is from one or more
touching pieces that were escaped with this, no character sequence can occur that closes the
JavaScript/JSON string literal, or has a meaning in HTML/XML that causes the HTML script section to be closed.
(If, however, the escaped section is preceded by or followed by strings from other sources, this can't be
guaranteed in some rare cases. Like <tt>x = "&lt;/${a?js_string}"</tt> might closes the "script"
element if <code>a</code> is <code>"script&gt;"</code>.)
The escaped characters are:
<table style="width: auto; border-collapse: collapse" border="1" summary="Characters escaped by jsStringEnc">
<tr>
<th>Input
<th>Output
<tr>
<td><tt>"</tt>
<td><tt>\"</tt>
<tr>
<td><tt>'</tt> if not in JSON-mode, nor is the <code>quited</code> argument <code>true</code>
<td><tt>\'</tt>
<tr>
<td><tt>\</tt>
<td><tt>\\</tt>
<tr>
<td><tt>/</tt> if the method can't know that it won't be directly after <tt>&lt;</tt>
<td><tt>\/</tt>
<tr>
<td><tt>&gt;</tt> if the method can't know that it won't be directly after <tt>]]</tt> or <tt>--</tt>
<td>JavaScript: <tt>\&gt;</tt>; JSON: <tt>\</tt><tt>u003E</tt>
<tr>
<td><tt>&lt;</tt> if the method can't know that it won't be directly followed by <tt>!</tt> or <tt>?</tt>
<td><tt><tt>\</tt>u003C</tt>
<tr>
<td>
u0000-u001f (UNICODE control characters - disallowed by JSON)<br>
u007f-u009f (UNICODE control characters - disallowed by JSON)
<td><tt>\n</tt>, <tt>\r</tt> and such, or if there's no such dedicated escape:
JavaScript: <tt>\x<i>XX</i></tt>, JSON: <tt>\<tt>u</tt><i>XXXX</i></tt>
<tr>
<td>
u2028 (Line separator - source code line-break in ECMAScript)<br>
u2029 (Paragraph separator - source code line-break in ECMAScript)<br>
<td><tt>\<tt>u</tt><i>XXXX</i></tt>
</table></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The string to escape</dd>
<dd><code>compatibility</code> - If escaping should restrict itself to rules that are valid in JSON, in JavaScript, or in both.</dd>
<dd><code>quotation</code> - In not <code>null</code>, quotation marks of this type are added around the value.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.32</dd>
</dl>
</li>
</ul>
<a name="parseNameValuePairList-java.lang.String-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parseNameValuePairList</h4>
<pre>public static&nbsp;java.util.Map&nbsp;parseNameValuePairList(java.lang.String&nbsp;s,
java.lang.String&nbsp;defaultValue)
throws java.text.ParseException</pre>
<div class="block">Parses a name-value pair list, where the pairs are separated with comma,
and the name and value is separated with colon.
The keys and values can contain only letters, digits and <tt>_</tt>. They
can't be quoted. White-space around the keys and values are ignored. The
value can be omitted if <code>defaultValue</code> is not null. When a
value is omitted, then the colon after the key must be omitted as well.
The same key can't be used for multiple times.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string to parse.
For example: <code>"strong:100, soft:900"</code>.</dd>
<dd><code>defaultValue</code> - the value used when the value is omitted in a
key-value pair.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the map that contains the name-value pairs.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.text.ParseException</code> - if the string is not a valid name-value
pair list.</dd>
</dl>
</li>
</ul>
<a name="isXMLID-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isXMLID</h4>
<pre>@Deprecated
public static&nbsp;boolean&nbsp;isXMLID(java.lang.String&nbsp;name)</pre>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Don't use this outside FreeMarker; it's name if misleading, and it doesn't follow the XML specs.</span></div>
<div class="block">Used internally by the XML DOM wrapper to check if the subvariable name is just an element name, or a more
complex XPath expression.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the name is a valid XML element name. (This routine might only be 99% accurate. REVISIT)</dd>
</dl>
</li>
</ul>
<a name="matchesName-java.lang.String-java.lang.String-java.lang.String-freemarker.core.Environment-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>matchesName</h4>
<pre>public static&nbsp;boolean&nbsp;matchesName(java.lang.String&nbsp;qname,
java.lang.String&nbsp;nodeName,
java.lang.String&nbsp;nsURI,
<a href="../../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env)</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the qname matches the combination of nodeName, nsURI, and environment prefix settings.</dd>
</dl>
</li>
</ul>
<a name="leftPad-java.lang.String-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;leftPad(java.lang.String&nbsp;s,
int&nbsp;minLength)</pre>
<div class="block">Pads the string at the left with spaces until it reaches the desired
length. If the string is longer than this length, then it returns the
unchanged string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
</dl>
</li>
</ul>
<a name="leftPad-java.lang.String-int-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;leftPad(java.lang.String&nbsp;s,
int&nbsp;minLength,
char&nbsp;filling)</pre>
<div class="block">Pads the string at the left with the specified character until it reaches
the desired length. If the string is longer than this length, then it
returns the unchanged string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
<dd><code>filling</code> - the filling pattern.</dd>
</dl>
</li>
</ul>
<a name="leftPad-java.lang.String-int-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;leftPad(java.lang.String&nbsp;s,
int&nbsp;minLength,
java.lang.String&nbsp;filling)</pre>
<div class="block">Pads the string at the left with a filling pattern until it reaches the
desired length. If the string is longer than this length, then it returns
the unchanged string. For example: <code>leftPad('ABC', 9, '1234')</code>
returns <code>"123412ABC"</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
<dd><code>filling</code> - the filling pattern. Must be at least 1 characters long.
Can't be <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="rightPad-java.lang.String-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;rightPad(java.lang.String&nbsp;s,
int&nbsp;minLength)</pre>
<div class="block">Pads the string at the right with spaces until it reaches the desired
length. If the string is longer than this length, then it returns the
unchanged string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
</dl>
</li>
</ul>
<a name="rightPad-java.lang.String-int-char-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;rightPad(java.lang.String&nbsp;s,
int&nbsp;minLength,
char&nbsp;filling)</pre>
<div class="block">Pads the string at the right with the specified character until it
reaches the desired length. If the string is longer than this length,
then it returns the unchanged string.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
<dd><code>filling</code> - the filling pattern.</dd>
</dl>
</li>
</ul>
<a name="rightPad-java.lang.String-int-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPad</h4>
<pre>public static&nbsp;java.lang.String&nbsp;rightPad(java.lang.String&nbsp;s,
int&nbsp;minLength,
java.lang.String&nbsp;filling)</pre>
<div class="block">Pads the string at the right with a filling pattern until it reaches the
desired length. If the string is longer than this length, then it returns
the unchanged string. For example: <code>rightPad('ABC', 9, '1234')</code>
returns <code>"ABC412341"</code>. Note that the filling pattern is
started as if you overlay <code>"123412341"</code> with the left-aligned
<code>"ABC"</code>, so it starts with <code>"4"</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - the string that will be padded.</dd>
<dd><code>minLength</code> - the length to reach.</dd>
<dd><code>filling</code> - the filling pattern. Must be at least 1 characters long.
Can't be <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="versionStringToInt-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>versionStringToInt</h4>
<pre>public static&nbsp;int&nbsp;versionStringToInt(java.lang.String&nbsp;version)</pre>
<div class="block">Converts a version number string to an integer for easy comparison.
The version number must start with numbers separated with
dots. There can be any number of such dot-separated numbers, but only
the first three will be considered. After the numbers arbitrary text can
follow, and will be ignored.
The string will be trimmed before interpretation.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>major * 1000000 + minor * 1000 + micro</dd>
</dl>
</li>
</ul>
<a name="tryToString-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tryToString</h4>
<pre>public static&nbsp;java.lang.String&nbsp;tryToString(java.lang.Object&nbsp;object)</pre>
<div class="block">Tries to run <code>toString()</code>, but if that fails, returns a
<code>"[com.example.SomeClass.toString() failed: " + e + "]"</code> instead. Also, it returns <code>null</code> for
<code>null</code> parameter.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.20</dd>
</dl>
</li>
</ul>
<a name="toUpperABC-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toUpperABC</h4>
<pre>public static&nbsp;java.lang.String&nbsp;toUpperABC(int&nbsp;n)</pre>
<div class="block">Converts <code>1</code>, <code>2</code>, <code>3</code> and so forth to <code>"A"</code>, <code>"B"</code>, <code>"C"</code> and so fort. When
reaching <code>"Z"</code>, it continues like <code>"AA"</code>, <code>"AB"</code>, etc. The lowest supported number is 1, but
there's no upper limit.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - If the argument is 0 or less.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="toLowerABC-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toLowerABC</h4>
<pre>public static&nbsp;java.lang.String&nbsp;toLowerABC(int&nbsp;n)</pre>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#toUpperABC-int-"><code>toUpperABC(int)</code></a>, but produces lower case result, like <code>"ab"</code>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="trim-char:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trim</h4>
<pre>public static&nbsp;char[]&nbsp;trim(char[]&nbsp;cs)</pre>
<div class="block">Behaves exactly like <code>String.trim()</code>, but works on arrays. If the resulting array would have the same
content after trimming, it returns the original array instance. Otherwise it returns a new array instance (or
<a href="../../../freemarker/template/utility/CollectionUtils.html#EMPTY_CHAR_ARRAY"><code>CollectionUtils.EMPTY_CHAR_ARRAY</code></a>).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="isTrimmableToEmpty-char:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTrimmableToEmpty</h4>
<pre>public static&nbsp;boolean&nbsp;isTrimmableToEmpty(char[]&nbsp;text)</pre>
<div class="block">Tells if <code>String.trim()</code> will return a 0-length string for the <code>String</code> equivalent of the argument.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.22</dd>
</dl>
</li>
</ul>
<a name="isTrimmableToEmpty-char:A-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTrimmableToEmpty</h4>
<pre>public static&nbsp;boolean&nbsp;isTrimmableToEmpty(char[]&nbsp;text,
int&nbsp;start)</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-"><code>isTrimmableToEmpty(char[])</code></a>, but acts on a sub-array that starts at <code>start</code> (inclusive index).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.23</dd>
</dl>
</li>
</ul>
<a name="isTrimmableToEmpty-char:A-int-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTrimmableToEmpty</h4>
<pre>public static&nbsp;boolean&nbsp;isTrimmableToEmpty(char[]&nbsp;text,
int&nbsp;start,
int&nbsp;end)</pre>
<div class="block">Like <a href="../../../freemarker/template/utility/StringUtil.html#isTrimmableToEmpty-char:A-"><code>isTrimmableToEmpty(char[])</code></a>, but acts on a sub-array that starts at <code>start</code> (inclusive index)
and ends at <code>end</code> (exclusive index).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.23</dd>
</dl>
</li>
</ul>
<a name="globToRegularExpression-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>globToRegularExpression</h4>
<pre>public static&nbsp;java.util.regex.Pattern&nbsp;globToRegularExpression(java.lang.String&nbsp;glob)</pre>
<div class="block">Same as <a href="../../../freemarker/template/utility/StringUtil.html#globToRegularExpression-java.lang.String-boolean-"><code>globToRegularExpression(String, boolean)</code></a> with <code>caseInsensitive</code> argument <code>false</code>.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
<a name="globToRegularExpression-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>globToRegularExpression</h4>
<pre>public static&nbsp;java.util.regex.Pattern&nbsp;globToRegularExpression(java.lang.String&nbsp;glob,
boolean&nbsp;caseInsensitive)</pre>
<div class="block">Creates a regular expression from a glob. The glob must use <code>/</code> for as file separator, not <code>\</code>
(backslash), and is always case sensitive.
<p>This glob implementation recognizes these special characters:
<ul>
<li><code>?</code>: Wildcard that matches exactly one character, other than <code>/</code>
<li><code>*</code>: Wildcard that matches zero, one or multiple characters, other than <code>/</code>
<li><code>**</code>: Wildcard that matches zero, one or multiple directories. For example, <code>**</code><code>/head.ftl</code>
matches <code>foo/bar/head.ftl</code>, <code>foo/head.ftl</code> and <code>head.ftl</code> too. <code>**</code> must be either
preceded by <code>/</code> or be at the beginning of the glob. <code>**</code> must be either followed by <code>/</code> or be
at the end of the glob. When <code>**</code> is at the end of the glob, it also matches file names, like
<code>a/**</code> matches <code>a/b/c.ftl</code>. If the glob only consist of a <code>**</code>, it will be a match for
everything.
<li><code>\</code> (backslash): Makes the next character non-special (a literal). For example <code>How\?.ftl</code> will
match <code>How?.ftl</code>, but not <code>HowX.ftl</code>. Naturally, two backslashes produce one literal backslash.
<li><code>[</code>: Reserved for future purposes; can't be used
<li><code>{</code>: Reserved for future purposes; can't be used
</ul></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.3.24</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/StringUtil.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../freemarker/template/utility/StandardCompress.html" title="class in freemarker.template.utility"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../freemarker/template/utility/StringUtil.JsStringEncCompatibility.html" title="enum in freemarker.template.utility"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?freemarker/template/utility/StringUtil.html" target="_top">Frames</a></li>
<li><a href="StringUtil.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>