回答編集履歴

3

コードの改善

2021/08/17 22:32

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
  `String intStr = intStrList[x].replaceFirst("[^0-9].*", "");` を
32
32
 
33
- `String intStr = intStrList[x].replaceAll("[^(]*\(|\).*", "");`
33
+ `String intStr = intStrList[x].replaceAll(".*\(|\).*", "");`
34
34
 
35
35
  に変えれば、何とかなりそうですが、その後で repalceFirst を使っている限り、
36
36
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  String s = "gold in (0,1,2,10,11)) ) >= 1 )";
52
52
 
53
- String s2 = s.replaceAll("[^(]*\(|\).*", "");
53
+ String s2 = s.replaceAll(".*\(|\).*", "");
54
54
 
55
55
  String[] ss = s2.split(",");
56
56
 

2

追記2

2021/08/17 22:32

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -35,3 +35,33 @@
35
35
  に変えれば、何とかなりそうですが、その後で repalceFirst を使っている限り、
36
36
 
37
37
  "(0,1,2,1,2)" は正しく置換されませんよ。
38
+
39
+
40
+
41
+ **追記2**
42
+
43
+ split を使うと、
44
+
45
+ ```java
46
+
47
+ class Main {
48
+
49
+ public static void main(String[] args) {
50
+
51
+ String s = "gold in (0,1,2,10,11)) ) >= 1 )";
52
+
53
+ String s2 = s.replaceAll("[^(]*\(|\).*", "");
54
+
55
+ String[] ss = s2.split(",");
56
+
57
+ for (int i = 0; i < ss.length; i++) ss[i] += ".0";
58
+
59
+ System.out.println(s);
60
+
61
+ System.out.println(s.replace(s2, String.join(",", ss)));
62
+
63
+ }
64
+
65
+ }
66
+
67
+ ```

1

追記

2021/08/17 18:19

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -21,3 +21,17 @@
21
21
 
22
22
 
23
23
  replace の代わりに replaceAll を使うと、正規表現を使ったことになるのかな?
24
+
25
+
26
+
27
+ **追記**
28
+
29
+ 元のコードの修正を最小限にしようとすると、
30
+
31
+ `String intStr = intStrList[x].replaceFirst("[^0-9].*", "");` を
32
+
33
+ `String intStr = intStrList[x].replaceAll("[^(]*\(|\).*", "");`
34
+
35
+ に変えれば、何とかなりそうですが、その後で repalceFirst を使っている限り、
36
+
37
+ "(0,1,2,1,2)" は正しく置換されませんよ。