質問編集履歴

3

誤字の修正

2018/09/06 00:12

投稿

sakata_inu
sakata_inu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -234,7 +234,7 @@
234
234
 
235
235
 
236
236
 
237
- この点に関して上記の実際に試してみました。
237
+ この点に関して実際に試してみました。
238
238
 
239
239
 
240
240
 

2

Java7とjava8での実行結果の違いを追加

2018/09/06 00:12

投稿

sakata_inu
sakata_inu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -227,3 +227,141 @@
227
227
  }
228
228
 
229
229
  ```
230
+
231
+ ### 追記
232
+
233
+ >java8ではString#split()のその点が改善されているようですがjava7でお願いします。
234
+
235
+
236
+
237
+ この点に関して上記の実際に試してみました。
238
+
239
+
240
+
241
+ 【実行コード】
242
+
243
+ ``` java
244
+
245
+ import java.util.Arrays;
246
+
247
+
248
+
249
+ public class Test {
250
+
251
+
252
+
253
+ public static void main(String[] args) {
254
+
255
+
256
+
257
+ String regex = "(?=◆)";
258
+
259
+
260
+
261
+ String str1 = "◆ABCD123";
262
+
263
+ String str2 = "◆ABCD123◆ABCD123";
264
+
265
+ String str3 = "◆ABCD123◆ABCD123◆";
266
+
267
+ String str4 = "ABCD123";
268
+
269
+ String str5 = "";
270
+
271
+ String str6 = "ABCD123◆ABCD123";
272
+
273
+
274
+
275
+ String[] ary1 = str1.split(regex);
276
+
277
+ String[] ary2 = str2.split(regex);
278
+
279
+ String[] ary3 = str3.split(regex);
280
+
281
+ String[] ary4 = str4.split(regex);
282
+
283
+ String[] ary5 = str5.split(regex);
284
+
285
+ String[] ary6 = str6.split(regex);
286
+
287
+
288
+
289
+ // Javaのバージョンを出力
290
+
291
+ System.out.println("java.version : " + System.getProperty("java.version"));
292
+
293
+ System.out.println("java.vm.version : " + System.getProperty("java.vm.version"));
294
+
295
+ System.out.println();
296
+
297
+
298
+
299
+ System.out.println(Arrays.toString(ary1));
300
+
301
+ System.out.println(Arrays.toString(ary2));
302
+
303
+ System.out.println(Arrays.toString(ary3));
304
+
305
+ System.out.println(Arrays.toString(ary4));
306
+
307
+ System.out.println(Arrays.toString(ary5));
308
+
309
+ System.out.println(Arrays.toString(ary6));
310
+
311
+ }
312
+
313
+ }
314
+
315
+ ```
316
+
317
+
318
+
319
+ ### 実行結果
320
+
321
+ 【Java7】
322
+
323
+ ```
324
+
325
+ java.version : 1.7.0_80
326
+
327
+ java.vm.version : 24.80-b11
328
+
329
+
330
+
331
+ [◆ABCD123]
332
+
333
+ [, ◆ABCD123, ◆ABCD123]
334
+
335
+ [, ◆ABCD123, ◆ABCD123, ◆]
336
+
337
+ [ABCD123]
338
+
339
+ []
340
+
341
+ [ABCD123, ◆ABCD123]
342
+
343
+ ```
344
+
345
+ 【Java8】
346
+
347
+ ```
348
+
349
+ java.version : 1.8.0_71
350
+
351
+ java.vm.version : 25.71-b15
352
+
353
+
354
+
355
+ [◆ABCD123]
356
+
357
+ [◆ABCD123, ◆ABCD123]
358
+
359
+ [◆ABCD123, ◆ABCD123, ◆]
360
+
361
+ [ABCD123]
362
+
363
+ []
364
+
365
+ [ABCD123, ◆ABCD123]
366
+
367
+ ```

1

上記で書いた横に詰める解決案の追加

2018/09/06 00:11

投稿

sakata_inu
sakata_inu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -131,3 +131,99 @@
131
131
 
132
132
 
133
133
  ```
134
+
135
+
136
+
137
+ ### 上記で書いた横に詰める解決案
138
+
139
+ ```java
140
+
141
+ import java.util.ArrayList;
142
+
143
+ import java.util.Arrays;
144
+
145
+ import java.util.List;
146
+
147
+
148
+
149
+ public class Test2 {
150
+
151
+
152
+
153
+ public static void main(String[] args) {
154
+
155
+
156
+
157
+ String regex = "(?=◆)";
158
+
159
+
160
+
161
+ String str1 = "◆ABCD123";
162
+
163
+ String str2 = "◆ABCD123◆ABCD123";
164
+
165
+ String str3 = "◆ABCD123◆ABCD123◆";
166
+
167
+ String str4 = "ABCD123";
168
+
169
+ String str5 = "";
170
+
171
+ String str6 = "ABCD123◆ABCD123";
172
+
173
+
174
+
175
+ String[] ary1 = split(str1, regex);
176
+
177
+ String[] ary2 = split(str2, regex);
178
+
179
+ String[] ary3 = split(str3, regex);
180
+
181
+ String[] ary4 = split(str4, regex);
182
+
183
+ String[] ary5 = split(str5, regex);
184
+
185
+ String[] ary6 = split(str6, regex);
186
+
187
+
188
+
189
+ System.out.println(Arrays.toString(ary1));
190
+
191
+ System.out.println(Arrays.toString(ary2));
192
+
193
+ System.out.println(Arrays.toString(ary3));
194
+
195
+ System.out.println(Arrays.toString(ary4));
196
+
197
+ System.out.println(Arrays.toString(ary5));
198
+
199
+ System.out.println(Arrays.toString(ary6));
200
+
201
+ }
202
+
203
+
204
+
205
+ private static String[] split(String str, String regex) {
206
+
207
+ String[] ary = str.split(regex);
208
+
209
+
210
+
211
+ if (ary.length >= 2 && ary[0].equals("")) {
212
+
213
+ List<String> tmp = new ArrayList<>(Arrays.asList(ary));
214
+
215
+ tmp.remove(0);
216
+
217
+ ary = tmp.toArray(new String[0]);
218
+
219
+ }
220
+
221
+
222
+
223
+ return ary;
224
+
225
+ }
226
+
227
+ }
228
+
229
+ ```