2017-09-12 5 views
1

Go文字列にJSON文字列で無効な文字が含まれているかどうかを検出する最も効率的な方法は何ですか?言い換えれば、これはJava questionに対するこの回答に相当するGoですか? strings.ContainsAnyASCII control charactersと仮定します)を使用するだけですか?Go:無効なJSON文字列を検出する最も良い方法は何ですか?

ctlChars := string([]byte{ 
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
    19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 
}) 
if strings.ContainsAny(str, ctlChars) { 
    println("has control chars") 
} 
+4

効率的ですか?速い?最低消費電力? CPU命令の数は少ないですか? Naclで走る?最低継続時間/ワット?キャッシュミスの回数は少なくて済みますか?わかりやすい?デバッグ中に最も効率的ですか? JSON仕様の変更を簡単に変更できますか? – Volker

+0

@Volkerはい。すべてのオプションとトレードオフを知っている/参照する/文書化すると便利です。 – theory

+0

「すべてのオプションとトレードオフ」はかなり広いです。特定の最適化ターゲットがある場合は、SOで十分に絞り込むことができます。 – Adrian

答えて

2

あなたは(あなたがに指摘したJavaの質問への回答のように)制御文字を識別するために探している場合は、簡単な解決策のためのunicode.IsControlを使用する場合があります。

https://golang.org/pkg/unicode/#IsControl

func containsControlChar(s string) bool { 
    for _, c := range s { 
     if unicode.IsControl(c) { 
      return true 
     } 
    } 
    return false 
} 

遊び場:どのような意味でのhttps://play.golang.org/p/Pr_9mmt-th

関連する問題