質問編集履歴

7

誤字

2019/09/21 15:16

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -182,21 +182,21 @@
182
182
 
183
183
 
184
184
 
185
- ■基本的には、このスペースの範囲をタグ化したい
185
+ ■基本的には、以下3つ満たしたときにタグ化する
186
186
 
187
187
  ・文字列の先頭が、「#」か「#」のようなシャープであること
188
188
 
189
- ・シャープ直前が、半角か全角のスペースあること
189
+ ・シャープ直前が、半角か全角のスペースあること
190
-
190
+
191
- ・文字列の直後が、半角か全角のスペースあること
191
+ ・文字列の直後が、半角か全角のスペースあること
192
-
193
-
194
-
192
+
193
+
194
+
195
- ■例外としてスペースが不要場合
195
+ ■例外としてスペースがなくてもタグ化する
196
-
196
+
197
- ・シャープ直前が、記号、行頭、textarea先頭の場合、シャープ直前のスペースは不要
197
+ ・シャープ直前が、記号、行頭、textarea先頭の場合、シャープ直前のスペースはがなくてもタグ化
198
-
198
+
199
- ・文字列がtextarea末尾の場合、直後のスペースは不要
199
+ ・文字列がtextarea末尾の場合、直後のスペースがなくてもタグ化
200
200
 
201
201
 
202
202
 

6

条件を整理

2019/09/21 15:16

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -182,32 +182,28 @@
182
182
 
183
183
 
184
184
 
185
- 基本条件)
185
+ 基本的には、このスペースの範囲をタグ化したい
186
-
186
+
187
- ・文字列の先頭が「#」か「#」のようなシャープであること
187
+ ・文字列の先頭が「#」か「#」のようなシャープであること
188
-
188
+
189
- ・シャープ直前半角か全角のスペースがあること
189
+ ・シャープ直前が、半角か全角のスペースがあること
190
-
190
+
191
- ・文字列の直後半角か全角のスペースがあること
191
+ ・文字列の直後が、半角か全角のスペースがあること
192
-
192
+
193
+
194
+
193
- ・このスペースの間の文字列をタグとして認識したい
195
+ ■例外としてスペースが不要な場合
194
-
195
-
196
-
197
- (例外条件)
196
+
198
-
199
- ・シャープ直前が記号行頭の場合、シャープ直前のスペースは不要
197
+ ・シャープ直前が記号行頭、textarea先頭の場合、シャープ直前のスペースは不要
200
-
201
- ・文字列がtextarea先頭の場合、直前のスペースは不要
202
198
 
203
199
  ・文字列がtextarea末尾の場合、直後のスペースは不要
204
200
 
205
201
 
206
202
 
207
- (ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
203
+ (ただしtwitterでは記号が除外され、「#tag!」のタグは「#tag」と抽出されますが、今回は「#tag!」で構いません。)
208
204
 
209
205
 
210
206
 
211
207
  以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
212
208
 
213
- [https://jsfiddle.net/boa1gm7r/](https://jsfiddle.net/boa1gm7r/)
209
+ [https://jsfiddle.net/04awdpu1/](https://jsfiddle.net/04awdpu1/)

5

シャープ直前が記号の場合→シャープ直前が記号か行頭の場合

2019/09/21 10:01

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -196,7 +196,7 @@
196
196
 
197
197
  (例外条件)
198
198
 
199
- ・シャープ直前が記号の場合、シャープ直前のスペースは不要
199
+ ・シャープ直前が記号か行頭の場合、シャープ直前のスペースは不要
200
200
 
201
201
  ・文字列がtextarea先頭の場合、直前のスペースは不要
202
202
 
@@ -210,4 +210,4 @@
210
210
 
211
211
  以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
212
212
 
213
- [https://jsfiddle.net/qe9h0yp2/](https://jsfiddle.net/qe9h0yp2/)
213
+ [https://jsfiddle.net/boa1gm7r/](https://jsfiddle.net/boa1gm7r/)

4

修正

2019/09/21 09:44

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -196,7 +196,7 @@
196
196
 
197
197
  (例外条件)
198
198
 
199
- ・シャープ直前がカンマか句読点の場合、シャープ直前のスペースは不要
199
+ ・シャープ直前が記号の場合、シャープ直前のスペースは不要
200
200
 
201
201
  ・文字列がtextarea先頭の場合、直前のスペースは不要
202
202
 
@@ -210,4 +210,4 @@
210
210
 
211
211
  以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
212
212
 
213
- [https://jsfiddle.net/L5w76z9e/](https://jsfiddle.net/L5w76z9e/)
213
+ [https://jsfiddle.net/qe9h0yp2/](https://jsfiddle.net/qe9h0yp2/)

3

具体例を追加

2019/09/20 11:55

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -188,20 +188,26 @@
188
188
 
189
189
  ・シャープ直前に半角か全角のスペースがあること
190
190
 
191
- ・文字列の直後にスペースがあること
191
+ ・文字列の直後に半角か全角のスペースがあること
192
-
192
+
193
- ・この直前と直後のスペースの間の文字列をタグとして認識したい
193
+ ・このスペースの間の文字列をタグとして認識したい
194
194
 
195
195
 
196
196
 
197
197
  (例外条件)
198
198
 
199
- ・シャープがカンマか句読点の次にある場合、シャープ直前のスペースは不要
199
+ ・シャープ直前がカンマか句読点の場合、シャープ直前のスペースは不要
200
-
200
+
201
- ・文字列がtextarea先頭なら直前のスペースは不要
201
+ ・文字列がtextarea先頭の場合、直前のスペースは不要
202
-
202
+
203
- ・文字列がtextarea末尾なら直後のスペースは不要
203
+ ・文字列がtextarea末尾の場合、直後のスペースは不要
204
-
205
-
206
-
204
+
205
+
206
+
207
- ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません
207
+ ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
208
+
209
+
210
+
211
+ 以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
212
+
213
+ [https://jsfiddle.net/L5w76z9e/](https://jsfiddle.net/L5w76z9e/)

2

条件を補足

2019/09/20 11:46

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -173,3 +173,35 @@
173
173
 
174
174
 
175
175
  ご意見、ご回答、宜しくお願い致します。
176
+
177
+
178
+
179
+ ###補足
180
+
181
+ twitterのタグ抽出とほぼ同じなので、詳しい抽出条件は次の通りです。
182
+
183
+
184
+
185
+ (基本条件)
186
+
187
+ ・文字列の先頭が「#」か「#」のようなシャープであること
188
+
189
+ ・シャープ直前に半角か全角のスペースがあること
190
+
191
+ ・文字列の直後にスペースがあること
192
+
193
+ ・この直前と直後のスペースの間の文字列をタグとして認識したい
194
+
195
+
196
+
197
+ (例外条件)
198
+
199
+ ・シャープがカンマか句読点の次にある場合、シャープ直前のスペースは不要
200
+
201
+ ・文字列がtextareaの先頭なら直前のスペースは不要
202
+
203
+ ・文字列がtextareaの末尾なら直後のスペースは不要
204
+
205
+
206
+
207
+ ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません

1

ソースコードを訂正

2019/09/20 11:09

投稿

DiningKitchen
DiningKitchen

スコア14

test CHANGED
File without changes
test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  ```html
56
56
 
57
- <textarea type="text" id="keyword" class="box" placeholder="#をつけるハッシュ検索" value="">#hello world #yes we #can</textarea>
57
+ <textarea type="text" id="keyword" class="box" value="">#hello world #yes we #can</textarea>
58
58
 
59
59
  <div id="clone" class="box"></div>
60
60
 
@@ -92,13 +92,7 @@
92
92
 
93
93
  ```
94
94
 
95
- function hash(str){
95
+ function hash( str ){
96
-
97
-
98
-
99
- var regexp = new RegExp(/#+[^  ]+(\s| )/);
100
-
101
- var refunction hash( str ) {
102
96
 
103
97
 
104
98
 
@@ -108,7 +102,7 @@
108
102
 
109
103
 
110
104
 
111
- if ( regexp.test(str) ) {
105
+ if ( regexp.test( str ) ) {
112
106
 
113
107
 
114
108
 
@@ -122,13 +116,13 @@
122
116
 
123
117
  // タグにspanをつけて全文をコピー
124
118
 
125
- tags.forEach( function( value ) {
119
+ tags.forEach(function( value ) {
126
120
 
127
121
  if ( str.match( value ) ) {
128
122
 
129
123
  var target = str.match( value );
130
124
 
131
- console.log( 'target:', target );
125
+ console.log( 'target:',target );
132
126
 
133
127
  var span = '<span class="tag">' + target + '</span>';
134
128
 
@@ -152,11 +146,13 @@
152
146
 
153
147
 
154
148
 
155
- $( '#btn' ).click( function() {
149
+ $( '#btn' ).click( function(){
156
150
 
157
151
  hash( $( '#keyword' ).val() );
158
152
 
159
153
  });
154
+
155
+
160
156
 
161
157
  ```
162
158
 
@@ -166,15 +162,13 @@
166
162
 
167
163
  なんとなく➁については原因がわかっていて、ループの中で`$( '#clone' ).html( replaced );`を書いているために毎回上書きされてしまい、だから最後にしかspanがつかないのだと思うのですが、ループの外に出してみればコピー自体生じず、解決策がわかりません。
168
164
 
169
-
170
-
171
165
  そして➀と➂についてはそもそも処理がわからない状況です。
172
166
 
173
167
 
174
168
 
175
169
  ###ソースコードのサンプル
176
170
 
177
- [https://jsfiddle.net/bh7veqw1/](https://jsfiddle.net/bh7veqw1/)
171
+ [https://jsfiddle.net/udwzey7v/](https://jsfiddle.net/udwzey7v/)
178
172
 
179
173
 
180
174