1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.any23.util;
18
19 import java.util.Locale;
20
21
22
23
24
25
26 public class StringUtils {
27
28
29
30
31
32
33
34
35
36
37
38 public static String join(String delimiter, String... data) {
39 final StringBuilder sb = new StringBuilder();
40 for (int i = 0; i < data.length; i++) {
41 sb.append(data[i]);
42 if (i >= data.length - 1) {
43 break;
44 }
45 sb.append(delimiter);
46 }
47 return sb.toString();
48 }
49
50
51
52
53
54
55
56
57
58
59
60 public static int countOccurrences(String container, String content) {
61 int lastIndex, currIndex = 0, occurrences = 0;
62 while (true) {
63 lastIndex = container.indexOf(content, currIndex);
64 if (lastIndex == -1) {
65 break;
66 }
67 currIndex = lastIndex + content.length();
68 occurrences++;
69 }
70 return occurrences;
71 }
72
73
74
75
76
77
78
79
80
81 public static int countNL(String in) {
82 return countOccurrences(in, "\n");
83 }
84
85
86
87
88
89
90
91
92
93
94
95
96 public static boolean isPrefix(String candidatePrefix, String container) {
97 if (candidatePrefix == null || container == null) {
98 throw new NullPointerException("Arguments must be not null.");
99 }
100 if (candidatePrefix.length() > container.length()) {
101 return false;
102 }
103 for (int i = 0; i < candidatePrefix.length(); i++) {
104 if (candidatePrefix.charAt(i) != container.charAt(i)) {
105 return false;
106 }
107 }
108 return true;
109 }
110
111
112
113
114
115
116
117
118
119
120
121
122 public static boolean isSuffix(String candidateSuffix, String container) {
123 if (candidateSuffix == null || container == null) {
124 throw new NullPointerException("Arguments must be not null.");
125 }
126 if (candidateSuffix.length() > container.length()) {
127 return false;
128 }
129 final int lenDiff = container.length() - candidateSuffix.length();
130 for (int i = candidateSuffix.length() - 1; i >= 0; i--) {
131 if (candidateSuffix.charAt(i) != container.charAt(i + lenDiff)) {
132 return false;
133 }
134 }
135 return true;
136 }
137
138
139
140
141
142
143
144
145
146 public static String escapeDoubleQuotes(String in) {
147 final StringBuilder out = new StringBuilder();
148 boolean escaped = false;
149 char current;
150 for (int i = 0; i < in.length(); i++) {
151 current = in.charAt(i);
152 if (current == '\\') {
153 escaped = !escaped;
154 } else if (current == '"' && !escaped) {
155 out.append('\\');
156 }
157 out.append(current);
158 }
159 return out.toString();
160 }
161
162
163
164
165
166
167
168
169
170 public static String escapeAsJSONString(String in) {
171 return escapeDoubleQuotes(in.replaceAll("\n", "\\\\n"));
172 }
173
174
175
176
177
178
179
180
181
182
183
184 public static String multiply(char c, int times) {
185 if (times <= 0) {
186 throw new IllegalArgumentException("Invalid number of times, must be > 0 .");
187 }
188 final char[] buffer = new char[times];
189 for (int i = 0; i < times; i++) {
190 buffer[i] = c;
191 }
192 return new String(buffer);
193 }
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208 public static String implementJavaNaming(String in) {
209
210 in = in.trim().replaceAll("-", "_");
211
212 if (in.matches("\\S+")) {
213 return org.apache.commons.lang3.StringUtils.uncapitalize(in);
214 }
215
216 in = in.toLowerCase(Locale.ROOT);
217 String[] words = in.split("\\s+");
218 StringBuilder sb = new StringBuilder(in.length());
219 sb.append(words[0]);
220 for (int i = 1; i < words.length; i++) {
221 sb.append(org.apache.commons.lang3.StringUtils.capitalize(words[i]));
222 }
223 return sb.toString();
224 }
225
226 private StringUtils() {
227 }
228 }