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

回答編集履歴

3

日本語表現を訂正

2017/04/21 03:28

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  追記2:Lhankor_Mhyさんが解説してくださっているので、少しだけ補足的にコメントします。
8
8
 
9
- javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascript文字で表現できるのですが、漢字にはUTF16一文字では表現できないものがありそれらはサロゲートペアと呼ばれるUTF16コード2つで一文字になります。つまりjavascript上length===2であるようなstringが漢字一文字を表すことがあるのですね。そのような文字コードの範囲は以下のようになってます。
9
+ javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascriptのstring一文字で表現できるのですが、漢字にはUTF16一文字では表現できないものがあります。それらの文字はサロゲートペアと呼ばれ、「string二文字」で一つの文字につまりjavascript上length===2であるようなstringが漢字一文字を表すことがあるのですね。そのような文字コードの範囲は以下のようになってます。
10
10
 
11
11
  \uD800-\uDBFFこれはサロゲートペア1文字目の範囲
12
12
  \uDC00-\uDFFFこれがサロゲートペア2文字目の範囲

2

追記

2017/04/21 03:28

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -4,9 +4,20 @@
4
4
 
5
5
  ----
6
6
 
7
- 訂正:質問コメントで下記がやりたいことではないと分かりまたので、これ以降は無視してください。
7
+ 2:Lhankor_Mhyさん解説してくださってるので、少しだけ補足的にコメントします
8
8
 
9
+ javascipt上で文字はUTF16で表現されるため、ほとんどの文字はjavascriptでの1文字で表現できるのですが、漢字にはUTF16一文字では表現できないものがあり、それらはサロゲートペアと呼ばれるUTF16コード2つで一文字になります。つまりjavascript上length===2であるようなstringが漢字一文字を表すことがあるのですね。そのような文字コードの範囲は以下のようになってます。
9
10
 
11
+ \uD800-\uDBFFこれはサロゲートペア1文字目の範囲
12
+ \uDC00-\uDFFFこれがサロゲートペア2文字目の範囲
13
+
14
+ 修正後の質問にかかれているパターンにはこのサロゲートペア範囲を対象にしていますのでこの点も注意して読み解いてみてください!
15
+
16
+ ----
17
+
18
+ 訂正1:質問コメントで下記がやりたいことではないと分かりましたので、これ以降は無視してください。
19
+
20
+
10
21
  ひょっとしたらカナ文字、ギリシャ文字、ロシア文字(それらは感じでもヒラカナでもありませんが)などの多くの文字もはじきたいのではありませんか?
11
22
  つまりあなたがしたいことはASCII文字のみに限定することではないかなというふうに思えました。
12
23
 

1

訂正

2017/04/20 11:36

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  そういう判定をしたい場合、UNICODEのコードポイント表を参照して「ここからこの範囲を除外」というように調べないといけないと思います。
4
4
 
5
+ ----
6
+
7
+ 訂正:質問コメントで下記がやりたいことではないと分かりましたので、これ以降は無視してください。
8
+
9
+
5
10
  ひょっとしたらカナ文字、ギリシャ文字、ロシア文字(それらは感じでもヒラカナでもありませんが)などの多くの文字もはじきたいのではありませんか?
6
11
  つまりあなたがしたいことはASCII文字のみに限定することではないかなというふうに思えました。
7
12