質問編集履歴
7
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -90,14 +90,14 @@
|
|
90
90
|
###補足
|
91
91
|
twitterのタグ抽出とほぼ同じなので、詳しい抽出条件は次の通りです。
|
92
92
|
|
93
|
-
■基本的には、
|
93
|
+
■基本的には、以下3つを満たしたときにタグ化する
|
94
94
|
・文字列の先頭が、「#」か「#」のようなシャープであること
|
95
|
-
・シャープ直前が、半角か全角のスペース
|
95
|
+
・シャープ直前が、半角か全角のスペースであること
|
96
|
-
・文字列の直後が、半角か全角のスペース
|
96
|
+
・文字列の直後が、半角か全角のスペースであること
|
97
97
|
|
98
|
-
■例外としてスペースが
|
98
|
+
■例外として、スペースがなくてもタグ化する
|
99
|
-
・シャープ直前が、記号、行頭、textarea先頭の場合、シャープ直前のスペースは
|
99
|
+
・シャープ直前が、記号、行頭、textarea先頭の場合、シャープ直前のスペースはがなくてもタグ化
|
100
|
-
・文字列がtextarea末尾の場合、直後のスペース
|
100
|
+
・文字列がtextarea末尾の場合、直後のスペースがなくてもタグ化
|
101
101
|
|
102
102
|
(ただしtwitterでは記号が除外され、「#tag!」のタグは「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
103
103
|
|
6
条件を整理
title
CHANGED
File without changes
|
body
CHANGED
@@ -90,18 +90,16 @@
|
|
90
90
|
###補足
|
91
91
|
twitterのタグ抽出とほぼ同じなので、詳しい抽出条件は次の通りです。
|
92
92
|
|
93
|
-
|
93
|
+
■基本的には、このスペースの範囲をタグ化したい
|
94
|
-
・文字列の先頭が「#」か「#」のようなシャープであること
|
94
|
+
・文字列の先頭が、「#」か「#」のようなシャープであること
|
95
|
-
・シャープ直前
|
95
|
+
・シャープ直前が、半角か全角のスペースがあること
|
96
|
-
・文字列の直後
|
96
|
+
・文字列の直後が、半角か全角のスペースがあること
|
97
|
-
・このスペースの間の文字列をタグとして認識したい
|
98
97
|
|
99
|
-
|
98
|
+
■例外としてスペースが不要な場合
|
100
|
-
・シャープ直前が記号
|
99
|
+
・シャープ直前が、記号、行頭、textarea先頭の場合、シャープ直前のスペースは不要
|
101
|
-
・文字列がtextarea先頭の場合、直前のスペースは不要
|
102
100
|
・文字列がtextarea末尾の場合、直後のスペースは不要
|
103
101
|
|
104
|
-
(ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
102
|
+
(ただしtwitterでは記号が除外され、「#tag!」のタグは「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
105
103
|
|
106
104
|
以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
|
107
|
-
[https://jsfiddle.net/
|
105
|
+
[https://jsfiddle.net/04awdpu1/](https://jsfiddle.net/04awdpu1/)
|
5
シャープ直前が記号の場合→シャープ直前が記号か行頭の場合
title
CHANGED
File without changes
|
body
CHANGED
@@ -97,11 +97,11 @@
|
|
97
97
|
・このスペースの間の文字列をタグとして認識したい
|
98
98
|
|
99
99
|
(例外条件)
|
100
|
-
・シャープ直前が記号の場合、シャープ直前のスペースは不要
|
100
|
+
・シャープ直前が記号か行頭の場合、シャープ直前のスペースは不要
|
101
101
|
・文字列がtextarea先頭の場合、直前のスペースは不要
|
102
102
|
・文字列がtextarea末尾の場合、直後のスペースは不要
|
103
103
|
|
104
104
|
(ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
105
105
|
|
106
106
|
以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
|
107
|
-
[https://jsfiddle.net/
|
107
|
+
[https://jsfiddle.net/boa1gm7r/](https://jsfiddle.net/boa1gm7r/)
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -97,11 +97,11 @@
|
|
97
97
|
・このスペースの間の文字列をタグとして認識したい
|
98
98
|
|
99
99
|
(例外条件)
|
100
|
-
・シャープ直前が
|
100
|
+
・シャープ直前が記号の場合、シャープ直前のスペースは不要
|
101
101
|
・文字列がtextarea先頭の場合、直前のスペースは不要
|
102
102
|
・文字列がtextarea末尾の場合、直後のスペースは不要
|
103
103
|
|
104
104
|
(ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
105
105
|
|
106
106
|
以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
|
107
|
-
[https://jsfiddle.net/
|
107
|
+
[https://jsfiddle.net/qe9h0yp2/](https://jsfiddle.net/qe9h0yp2/)
|
3
具体例を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -93,12 +93,15 @@
|
|
93
93
|
(基本条件)
|
94
94
|
・文字列の先頭が「#」か「#」のようなシャープであること
|
95
95
|
・シャープ直前に半角か全角のスペースがあること
|
96
|
-
・文字列の直後にスペースがあること
|
96
|
+
・文字列の直後に半角か全角のスペースがあること
|
97
|
-
・この
|
97
|
+
・このスペースの間の文字列をタグとして認識したい
|
98
98
|
|
99
99
|
(例外条件)
|
100
|
-
・シャープがカンマか句読点の
|
100
|
+
・シャープ直前がカンマか句読点の場合、シャープ直前のスペースは不要
|
101
|
-
・文字列がtextarea
|
101
|
+
・文字列がtextarea先頭の場合、直前のスペースは不要
|
102
|
-
・文字列がtextarea
|
102
|
+
・文字列がtextarea末尾の場合、直後のスペースは不要
|
103
103
|
|
104
|
-
ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません
|
104
|
+
(ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません。)
|
105
|
+
|
106
|
+
以上の条件の具体例を以下に列挙致しましたので、ご参照ください。
|
107
|
+
[https://jsfiddle.net/L5w76z9e/](https://jsfiddle.net/L5w76z9e/)
|
2
条件を補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -85,4 +85,20 @@
|
|
85
85
|
###ソースコードのサンプル
|
86
86
|
[https://jsfiddle.net/udwzey7v/](https://jsfiddle.net/udwzey7v/)
|
87
87
|
|
88
|
-
ご意見、ご回答、宜しくお願い致します。
|
88
|
+
ご意見、ご回答、宜しくお願い致します。
|
89
|
+
|
90
|
+
###補足
|
91
|
+
twitterのタグ抽出とほぼ同じなので、詳しい抽出条件は次の通りです。
|
92
|
+
|
93
|
+
(基本条件)
|
94
|
+
・文字列の先頭が「#」か「#」のようなシャープであること
|
95
|
+
・シャープ直前に半角か全角のスペースがあること
|
96
|
+
・文字列の直後にスペースがあること
|
97
|
+
・この直前と直後のスペースの間の文字列をタグとして認識したい
|
98
|
+
|
99
|
+
(例外条件)
|
100
|
+
・シャープがカンマか句読点の次にある場合、シャープ直前のスペースは不要
|
101
|
+
・文字列がtextareaの先頭なら直前のスペースは不要
|
102
|
+
・文字列がtextareaの末尾なら直後のスペースは不要
|
103
|
+
|
104
|
+
ただしtwitterでは記号が除外され、「#tag!」は「#tag」と抽出されますが、今回は「#tag!」で構いません
|
1
ソースコードを訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
###該当のソースコード
|
28
28
|
```html
|
29
|
-
<textarea type="text" id="keyword" class="box"
|
29
|
+
<textarea type="text" id="keyword" class="box" value="">#hello world #yes we #can</textarea>
|
30
30
|
<div id="clone" class="box"></div>
|
31
31
|
<button id="btn">clone</button>
|
32
32
|
```
|
@@ -45,25 +45,22 @@
|
|
45
45
|
|
46
46
|
```
|
47
47
|
```
|
48
|
-
function hash(str){
|
48
|
+
function hash( str ){
|
49
49
|
|
50
|
-
var regexp = new RegExp(/#+[^ ]+(\s| )/);
|
51
|
-
var refunction hash( str ) {
|
52
|
-
|
53
50
|
var regexp = new RegExp( /#+[^ ]+(\s| )/ );
|
54
51
|
var result = regexp.test( str );
|
55
52
|
|
56
|
-
if ( regexp.test(str) ) {
|
53
|
+
if ( regexp.test( str ) ) {
|
57
54
|
|
58
55
|
// 取得
|
59
56
|
var tags = str.match( /#+[^ ]+(\s| )/g );
|
60
57
|
console.log( 'tags;', tags );
|
61
58
|
|
62
59
|
// タグにspanをつけて全文をコピー
|
63
|
-
tags.forEach(
|
60
|
+
tags.forEach(function( value ) {
|
64
61
|
if ( str.match( value ) ) {
|
65
62
|
var target = str.match( value );
|
66
|
-
console.log( 'target:',
|
63
|
+
console.log( 'target:',target );
|
67
64
|
var span = '<span class="tag">' + target + '</span>';
|
68
65
|
var replaced = str.replace( target, span );
|
69
66
|
$( '#clone' ).html( replaced );
|
@@ -75,17 +72,17 @@
|
|
75
72
|
}
|
76
73
|
}
|
77
74
|
|
78
|
-
$( '#btn' ).click( function()
|
75
|
+
$( '#btn' ).click( function(){
|
79
76
|
hash( $( '#keyword' ).val() );
|
80
77
|
});
|
78
|
+
|
81
79
|
```
|
82
80
|
|
83
81
|
###試したこと
|
84
82
|
なんとなく➁については原因がわかっていて、ループの中で`$( '#clone' ).html( replaced );`を書いているために毎回上書きされてしまい、だから最後にしかspanがつかないのだと思うのですが、ループの外に出してみればコピー自体生じず、解決策がわかりません。
|
85
|
-
|
86
83
|
そして➀と➂についてはそもそも処理がわからない状況です。
|
87
84
|
|
88
85
|
###ソースコードのサンプル
|
89
|
-
[https://jsfiddle.net/
|
86
|
+
[https://jsfiddle.net/udwzey7v/](https://jsfiddle.net/udwzey7v/)
|
90
87
|
|
91
88
|
ご意見、ご回答、宜しくお願い致します。
|