質問編集履歴

3

説明と文法の修正行いました。

2020/06/11 08:02

投稿

terumae
terumae

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ 前提
4
+
3
5
 
4
6
 
5
7
  https://teratail.com/questions/269193
@@ -8,27 +10,47 @@
8
10
 
9
11
  自分の確認不手際で見逃している箇所がありました。
10
12
 
11
-
13
+ 申し訳ございません。
14
+
15
+
16
+
12
-
17
+ また,javascriptを触り始めて3日目程度の知識が無いので
18
+
19
+ 実現したいことや質問に不慣れな部分がある事に関しても
20
+
21
+ お手数お掛け致します。
22
+
23
+
24
+
25
+ 実現したいこと
26
+
27
+
28
+
13
- JavascriptでTSVファイル読み込んでいるのですが
29
+ Javascriptで頂いたTSVファイル読み込んでいるのですが
14
30
 
15
31
  タブ区切りを行った際にデータ部分にタブが混じっているものがあり
16
32
 
17
33
  本来区切る必要が無い箇所でタブ区切りがされてしまいます
18
34
 
35
+ ※頂くTSVを相手側でデータ内のタブを考慮して修正して頂く事が出来ないので
36
+
37
+ こちら側で対応しなければならない形です。
38
+
19
39
 
20
40
 
21
41
  なので、タブ区切りを行う前にreplaceを使い
22
42
 
23
- データ部分のタブを空白に置き換えることで不必要な分割が
43
+ データ部分のタブを空白に置き換えることで
24
-
44
+
25
- されないようにしようとしております。
45
+ 不必要な分割がされないようにしようとしております。
26
46
 
27
47
 
28
48
 
29
49
  もしくは、タブ区切りを行う際に先頭が
30
50
 
51
+ ダブルクオーテーションの箇所は
52
+
31
- ダブルクオーテーションの箇所はタブ区切りを行わないなどは可能でしょうか?
53
+ タブ区切りを行わないなどは可能でしょうか?
32
54
 
33
55
      
34
56
 
@@ -50,9 +72,11 @@
50
72
 
51
73
  配送方法 [TAB]宅配便(常温)
52
74
 
53
- 提供事業所 [TAB] (株)池商"[TAB]1か月間
75
+ 提供事業所 [TAB] (株)佐々木"[TAB]1か月間
76
+
77
+
78
+
54
-
79
+ (異常:データ部分も区切られてしまう)
55
-
56
80
 
57
81
  6000,"販売者,(株)佐々木",,
58
82
 
@@ -66,25 +90,25 @@
66
90
 
67
91
  配送方法 ,宅配便(常温)
68
92
 
69
- 提供事業所 ,株)池商",
93
+ 提供事業所 ,株)佐々木",
70
94
 
71
95
  1か月間
72
96
 
73
97
 
74
98
 
75
- 本来""で囲まれた部分のタブの箇所で分割がされたくない部分が分割されてしまいます
99
+ 本来""で囲まれた部分のタブの箇所で
100
+
101
+ 分割がされたくない部分が分割されてしまいます
76
102
 
77
103
 
78
104
 
79
105
  本来であれば
80
106
 
81
- "販売者[TAB](株)池商 "
107
+ "販売者[TAB](株)佐々木 "の中の[TAB]と
82
-
83
- の中の[TAB]と
108
+
84
-
85
-
86
-
109
+
110
+
87
- "内容量[TAB] 【宮崎}
111
+ "内容量[TAB] 200g
88
112
 
89
113
  原材料名 [TAB]ブドウ糖、香料
90
114
 
@@ -94,7 +118,7 @@
94
118
 
95
119
  配送方法 [TAB]宅配便(常温)
96
120
 
97
- 提供事業所 [TAB] (株)池商"
121
+ 提供事業所 [TAB] (株)佐々木"
98
122
 
99
123
  の中の[TAB]で区切られたくない形です。
100
124
 
@@ -124,7 +148,7 @@
124
148
 
125
149
  配送方法 [TAB]宅配便(常温)
126
150
 
127
- 提供事業所 [TAB] (株)池商",1か月間
151
+ 提供事業所 [TAB] (株)佐々木",1か月間
128
152
 
129
153
 
130
154
 
@@ -144,7 +168,7 @@
144
168
 
145
169
  配送方法 宅配便(常温)
146
170
 
147
- 提供事業所 (株)池商",
171
+ 提供事業所 (株)佐々木",
148
172
 
149
173
  1か月間
150
174
 

2

ソースコードの場所変更

2020/06/11 08:02

投稿

terumae
terumae

スコア2

test CHANGED
File without changes
test CHANGED
@@ -154,62 +154,66 @@
154
154
 
155
155
 
156
156
 
157
- ```ここに言語名を入力
158
-
159
157
  javascript
160
158
 
159
+ https://teratail.com/questions/269193の置換方法の正規表現を入れてみました。
160
+
161
+
162
+
163
+ > function getArraysFromTSV(tsvFile): Promise<string[][]> {
164
+
165
+ > return new Promise(resolve => {
166
+
167
+ > let appReader = new FileReader();
168
+
169
+ > appReader.onload = function (e) {
170
+
171
+ > const rawString = `${e.target.result}`;
172
+
173
+ >
174
+
175
+ > resolve(
176
+
177
+ > **rawString.replace(/(["].+?)\t(.+?["])/g**,"$1$2")
178
+
179
+ > .split('\n')
180
+
181
+ > .map(string => string.split("\t"))
182
+
183
+ > .map(
184
+
185
+ > row => row.map(
186
+
187
+ > cell => cell.charAt(0) === '"'
188
+
189
+ > && cell.charAt(cell.length - 1) === '"'
190
+
191
+ > ? cell.substring(1, cell.length - 1).replace(/<!--NEWLINE-->/g, "\n").replace(/""/g, '"')
192
+
193
+ > : cell
194
+
195
+ > )
196
+
197
+ > ).filter(row => row.join('').trim() !== "")
198
+
199
+ > )
200
+
201
+ > };
202
+
203
+ > appReader.readAsText(tsvFile);
204
+
205
+ > });
206
+
207
+ > }
208
+
161
209
  ```
162
210
 
163
211
 
164
212
 
165
213
  ### 試したこと
166
214
 
167
- https://teratail.com/questions/269193の置換方法の正規表現を入れてみました。
168
-
169
-
170
-
171
- > function getArraysFromTSV(tsvFile): Promise<string[][]> {
172
-
173
- > return new Promise(resolve => {
174
-
175
- > let appReader = new FileReader();
176
-
177
- > appReader.onload = function (e) {
178
-
179
- > const rawString = `${e.target.result}`;
180
-
181
- >
182
-
183
- > resolve(
215
+ 正規表現の箇所を変更して
184
-
216
+
185
- > **rawString.replace(/(["].+?)\t(.+?["])/g**,"$1$2")
217
+ console.log(rawString.replace(/(["].+?)\t(.+?["])/g,"$1$2"))
186
-
187
- > .split('\n')
218
+
188
-
189
- > .map(string => string.split("\t"))
190
-
191
- > .map(
192
-
193
- > row => row.map(
194
-
195
- > cell => cell.charAt(0) === '"'
196
-
197
- > && cell.charAt(cell.length - 1) === '"'
198
-
199
- > ? cell.substring(1, cell.length - 1).replace(/<!--NEWLINE-->/g, "\n").replace(/""/g, '"')
200
-
201
- > : cell
202
-
203
- > )
204
-
205
- > ).filter(row => row.join('').trim() !== "")
206
-
207
- > )
208
-
209
- > };
210
-
211
- > appReader.readAsText(tsvFile);
219
+ を書いてみてgoogle chromeの検証のconsoleを確認してみた形です。
212
-
213
- > });
214
-
215
- > }

1

質問の修正、試したコードの修正

2020/06/11 04:14

投稿

terumae
terumae

スコア2

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
 
4
4
 
5
+ https://teratail.com/questions/269193
6
+
7
+ で解決したと思った件に関してですが
8
+
9
+ 自分の確認不手際で見逃している箇所がありました。
10
+
11
+
12
+
5
13
  JavascriptでTSVファイル読み込んでいるのですが
6
14
 
7
15
  タブ区切りを行った際にデータ部分にタブが混じっているものがあり
@@ -26,7 +34,7 @@
26
34
 
27
35
  ### 発生している問題・エラーメッセージ
28
36
 
29
- 正規表現を使って試しているのですが
37
+ 下記TSVのデータがあるのですが
30
38
 
31
39
 
32
40
 
@@ -46,8 +54,6 @@
46
54
 
47
55
 
48
56
 
49
-
50
-
51
57
  6000,"販売者,(株)佐々木",,
52
58
 
53
59
  内容量, 200g
@@ -122,6 +128,28 @@
122
128
 
123
129
 
124
130
 
131
+ もしくは、
132
+
133
+
134
+
135
+ 6000,
136
+
137
+ "販売者(株)佐々木 ",,"内容量 200g
138
+
139
+ 原材料名 ブドウ糖、香料
140
+
141
+ 賞味期限 製造日より6ヶ月以内
142
+
143
+ 保存方法 直射日光を避け常温
144
+
145
+ 配送方法 宅配便(常温)
146
+
147
+ 提供事業所 (株)池商",
148
+
149
+ 1か月間
150
+
151
+
152
+
125
153
  ### 該当のソースコード
126
154
 
127
155
 
@@ -136,8 +164,52 @@
136
164
 
137
165
  ### 試したこと
138
166
 
139
-
167
+ https://teratail.com/questions/269193の置換方法の正規表現を入れてみました。
168
+
169
+
170
+
140
-
171
+ > function getArraysFromTSV(tsvFile): Promise<string[][]> {
172
+
173
+ > return new Promise(resolve => {
174
+
175
+ > let appReader = new FileReader();
176
+
177
+ > appReader.onload = function (e) {
178
+
179
+ > const rawString = `${e.target.result}`;
180
+
181
+ >
182
+
141
- 試した置換のコードです。
183
+ > resolve(
142
-
184
+
143
- test.replace(/(["].+?)\t(.+?["])/g,""))
185
+ > **rawString.replace(/(["].+?)\t(.+?["])/g**,"$1$2")
186
+
187
+ > .split('\n')
188
+
189
+ > .map(string => string.split("\t"))
190
+
191
+ > .map(
192
+
193
+ > row => row.map(
194
+
195
+ > cell => cell.charAt(0) === '"'
196
+
197
+ > && cell.charAt(cell.length - 1) === '"'
198
+
199
+ > ? cell.substring(1, cell.length - 1).replace(/<!--NEWLINE-->/g, "\n").replace(/""/g, '"')
200
+
201
+ > : cell
202
+
203
+ > )
204
+
205
+ > ).filter(row => row.join('').trim() !== "")
206
+
207
+ > )
208
+
209
+ > };
210
+
211
+ > appReader.readAsText(tsvFile);
212
+
213
+ > });
214
+
215
+ > }