teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

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

2020/06/11 08:02

投稿

terumae
terumae

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,19 +1,30 @@
1
1
  ### 前提・実現したいこと
2
+ 前提
2
3
 
3
4
  https://teratail.com/questions/269193
4
5
  で解決したと思った件に関してですが
5
6
  自分の確認不手際で見逃している箇所がありました。
7
+ 申し訳ございません。
6
8
 
9
+ また,javascriptを触り始めて3日目程度の知識が無いので
10
+ 実現したいことや質問に不慣れな部分がある事に関しても
11
+ お手数お掛け致します。
12
+
13
+ 実現したいこと
14
+
7
- JavascriptでTSVファイル読み込んでいるのですが
15
+ Javascriptで頂いたTSVファイル読み込んでいるのですが
8
16
  タブ区切りを行った際にデータ部分にタブが混じっているものがあり
9
17
  本来区切る必要が無い箇所でタブ区切りがされてしまいます
18
+ ※頂くTSVを相手側でデータ内のタブを考慮して修正して頂く事が出来ないので
19
+ こちら側で対応しなければならない形です。
10
20
 
11
21
  なので、タブ区切りを行う前にreplaceを使い
12
- データ部分のタブを空白に置き換えることで不必要な分割が
22
+ データ部分のタブを空白に置き換えることで
13
- されないようにしようとしております。
23
+ 不必要な分割がされないようにしようとしております。
14
24
 
15
25
  もしくは、タブ区切りを行う際に先頭が
26
+ ダブルクオーテーションの箇所は
16
- ダブルクオーテーションの箇所はタブ区切りを行わないなどは可能でしょうか?
27
+ タブ区切りを行わないなどは可能でしょうか?
17
28
      
18
29
  ### 発生している問題・エラーメッセージ
19
30
  下記TSVのデータがあるのですが
@@ -24,29 +35,30 @@
24
35
  賞味期限 [TAB]製造日より6ヶ月以内
25
36
  保存方法 [TAB]直射日光を避け常温
26
37
  配送方法 [TAB]宅配便(常温)
27
- 提供事業所 [TAB] (株)池商"[TAB]1か月間
38
+ 提供事業所 [TAB] (株)佐々木"[TAB]1か月間
28
39
 
40
+ (異常:データ部分も区切られてしまう)
29
41
  6000,"販売者,(株)佐々木",,
30
42
  内容量, 200g
31
43
  原材料名 ,ブドウ糖、香料
32
44
  賞味期限 ,製造日より6ヶ月以内
33
45
  保存方法 ,直射日光を避け常温
34
46
  配送方法 ,宅配便(常温)
35
- 提供事業所 ,株)池商",
47
+ 提供事業所 ,株)佐々木",
36
48
  1か月間
37
49
 
38
- 本来""で囲まれた部分のタブの箇所で分割がされたくない部分が分割されてしまいます
50
+ 本来""で囲まれた部分のタブの箇所で
51
+ 分割がされたくない部分が分割されてしまいます
39
52
 
40
53
  本来であれば
41
- "販売者[TAB](株)池商 "
54
+ "販売者[TAB](株)佐々木 "の中の[TAB]と
42
- の中の[TAB]と
43
55
 
44
- "内容量[TAB] 【宮崎}
56
+ "内容量[TAB] 200g
45
57
  原材料名 [TAB]ブドウ糖、香料
46
58
  賞味期限 [TAB]製造日より6ヶ月以内
47
59
  保存方法 [TAB]直射日光を避け常温
48
60
  配送方法 [TAB]宅配便(常温)
49
- 提供事業所 [TAB] (株)池商"
61
+ 提供事業所 [TAB] (株)佐々木"
50
62
  の中の[TAB]で区切られたくない形です。
51
63
 
52
64
  ""の無いのTABを空白に置き換えるか
@@ -61,7 +73,7 @@
61
73
  賞味期限 [TAB]製造日より6ヶ月以内
62
74
  保存方法 [TAB]直射日光を避け常温
63
75
  配送方法 [TAB]宅配便(常温)
64
- 提供事業所 [TAB] (株)池商",1か月間
76
+ 提供事業所 [TAB] (株)佐々木",1か月間
65
77
 
66
78
  もしくは、
67
79
 
@@ -71,7 +83,7 @@
71
83
  賞味期限 製造日より6ヶ月以内
72
84
  保存方法 直射日光を避け常温
73
85
  配送方法 宅配便(常温)
74
- 提供事業所 (株)池商",
86
+ 提供事業所 (株)佐々木",
75
87
  1か月間
76
88
 
77
89
  ### 該当のソースコード

2

ソースコードの場所変更

2020/06/11 08:02

投稿

terumae
terumae

スコア2

title CHANGED
File without changes
body CHANGED
@@ -76,11 +76,7 @@
76
76
 
77
77
  ### 該当のソースコード
78
78
 
79
- ```ここに言語名を入力
80
79
  javascript
81
- ```
82
-
83
- ### 試したこと
84
80
  https://teratail.com/questions/269193の置換方法の正規表現を入れてみました。
85
81
 
86
82
  > function getArraysFromTSV(tsvFile): Promise<string[][]> {
@@ -105,4 +101,10 @@
105
101
  > };
106
102
  > appReader.readAsText(tsvFile);
107
103
  > });
108
- > }
104
+ > }
105
+ ```
106
+
107
+ ### 試したこと
108
+ 正規表現の箇所を変更して
109
+ console.log(rawString.replace(/(["].+?)\t(.+?["])/g,"$1$2"))
110
+ を書いてみてgoogle chromeの検証のconsoleを確認してみた形です。

1

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

2020/06/11 04:14

投稿

terumae
terumae

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ https://teratail.com/questions/269193
4
+ で解決したと思った件に関してですが
5
+ 自分の確認不手際で見逃している箇所がありました。
6
+
3
7
  JavascriptでTSVファイル読み込んでいるのですが
4
8
  タブ区切りを行った際にデータ部分にタブが混じっているものがあり
5
9
  本来区切る必要が無い箇所でタブ区切りがされてしまいます
@@ -12,7 +16,7 @@
12
16
  ダブルクオーテーションの箇所はタブ区切りを行わないなどは可能でしょうか?
13
17
      
14
18
  ### 発生している問題・エラーメッセージ
15
- 正規表現を使って試しているのですが
19
+ 下記TSVのデータがあるのですが
16
20
 
17
21
  (異常:データ部分にTAB有り)
18
22
  [TAB]6000[TAB]"販売者[TAB](株)佐々木 "[TAB][TAB]"内容量[TAB] 200g
@@ -22,7 +26,6 @@
22
26
  配送方法 [TAB]宅配便(常温)
23
27
  提供事業所 [TAB] (株)池商"[TAB]1か月間
24
28
 
25
-
26
29
  6000,"販売者,(株)佐々木",,
27
30
  内容量, 200g
28
31
  原材料名 ,ブドウ糖、香料
@@ -60,6 +63,17 @@
60
63
  配送方法 [TAB]宅配便(常温)
61
64
  提供事業所 [TAB] (株)池商",1か月間
62
65
 
66
+ もしくは、
67
+
68
+ 6000,
69
+ "販売者(株)佐々木 ",,"内容量 200g
70
+ 原材料名 ブドウ糖、香料
71
+ 賞味期限 製造日より6ヶ月以内
72
+ 保存方法 直射日光を避け常温
73
+ 配送方法 宅配便(常温)
74
+ 提供事業所 (株)池商",
75
+ 1か月間
76
+
63
77
  ### 該当のソースコード
64
78
 
65
79
  ```ここに言語名を入力
@@ -67,6 +81,28 @@
67
81
  ```
68
82
 
69
83
  ### 試したこと
84
+ https://teratail.com/questions/269193の置換方法の正規表現を入れてみました。
70
85
 
86
+ > function getArraysFromTSV(tsvFile): Promise<string[][]> {
87
+ > return new Promise(resolve => {
88
+ > let appReader = new FileReader();
89
+ > appReader.onload = function (e) {
90
+ > const rawString = `${e.target.result}`;
91
+ >
71
- 試した置換のコードです。
92
+ > resolve(
72
- test.replace(/(["].+?)\t(.+?["])/g,""))
93
+ > **rawString.replace(/(["].+?)\t(.+?["])/g**,"$1$2")
94
+ > .split('\n')
95
+ > .map(string => string.split("\t"))
96
+ > .map(
97
+ > row => row.map(
98
+ > cell => cell.charAt(0) === '"'
99
+ > && cell.charAt(cell.length - 1) === '"'
100
+ > ? cell.substring(1, cell.length - 1).replace(/<!--NEWLINE-->/g, "\n").replace(/""/g, '"')
101
+ > : cell
102
+ > )
103
+ > ).filter(row => row.join('').trim() !== "")
104
+ > )
105
+ > };
106
+ > appReader.readAsText(tsvFile);
107
+ > });
108
+ > }