質問編集履歴
7
誤字
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
条件を整理
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/
|
209
|
+
[https://jsfiddle.net/04awdpu1/](https://jsfiddle.net/04awdpu1/)
|
5
シャープ直前が記号の場合→シャープ直前が記号か行頭の場合
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/
|
213
|
+
[https://jsfiddle.net/boa1gm7r/](https://jsfiddle.net/boa1gm7r/)
|
4
修正
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/
|
213
|
+
[https://jsfiddle.net/qe9h0yp2/](https://jsfiddle.net/qe9h0yp2/)
|
3
具体例を追加
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
条件を補足
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
ソースコードを訂正
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"
|
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(
|
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:',
|
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/
|
171
|
+
[https://jsfiddle.net/udwzey7v/](https://jsfiddle.net/udwzey7v/)
|
178
172
|
|
179
173
|
|
180
174
|
|