2016-07-16 8 views
0

BSDシステムのためにvis(3)unvis(3)をエミュレートする類似のライブラリ/パッケージはありますか?私は空白などの特殊文字を含む文字列の表現を必要とする何かをしようとしています。ない正確ライブラリー/パッケージは文字列エンコーディングを処理しますか?

+0

[strconv.Quote](https://golang.org/pkg/strconv/#Quote)またはQuoteToASCIIは、あなたが探している何をすればいいですか? – hobbs

答えて

0

ありません、しかし、あなたはURLエンコードを探しているなら、あなたはnet/urlパッケージにしたいすべてのURLエンコードを行うことができます
参照:Encode/decode URLs
と:Is there any example and usage of url.QueryEscape ? for golang

サンプルコード:

fmt.Println(url.QueryEscape("https://stackoverflow.com/questions/tagged/go test\r \r\n")) 

出力:

http%3A%2F%2Fstackoverflow.com%2Fquestions%2Ftagged%2Fgo+test%0D+%0D%0A 

たり、あなた自身のを書く:

囲碁文字列では、エンコードUTF-8あり、そして実際にバイトの読み出し専用のスライスである:

str := "UTF-8" 
bytes := []byte(str) // string to slice 
fmt.Println(str, bytes) // UTF8 [85 84 70 45 56] 

または変換:
あなたはこのようなバイトを得ることができますこのような文字列のバイト:

s := string([]byte{85, 84, 70, 45, 56, 32, 0xc2, 0xb5}) // slice to string 
fmt.Println(s)           // UTF-8 µ 

に0xC2 0xB5参照文字 'MICROのSIGN'(U + 00B5)はUTF-8(16進数)である。http://www.fileformat.info/info/unicode/char/00b5/index.htm

また、あなたがこのようなバイトことがあります。

for i := 0; i < len(s); i++ { 
    fmt.Printf("%d: %d, ", i, s[i]) 
    //0: 85, 1: 84, 2: 70, 3: 45, 4: 56, 5: 32, 6: 194, 7: 181, 
} 

またはコンパクトHexフォーマットで:

fmt.Printf("% x\n", s) // 55 54 46 2d 38 20 c2 b5 

と、このようなルーン(Unicodeのコードポイント)を取得:

for i, v := range s { 
    fmt.Printf("%d: %v, ", i, v) 
    //0: 85, 1: 84, 2: 70, 3: 45, 4: 56, 5: 32, 6: 181, 
} 

参照:What is a rune?

と文字列にルーンを変換:文字列へのルーン文字の

r := rune(181) 
fmt.Printf("%#U\n", r) // U+00B5 'µ' 
st := "this is UTF-8: " + string(r) 
fmt.Println(st) // this is UTF-8: µ 

変換スライス:

rs := []rune{181, 181, 181, 181} 
sr := string(rs) 
fmt.Println(sr) // µµµµ 

ルーン文字のスライスに変換する文字列:

br := []rune(sr) 
fmt.Println(br) //[181 181 181 181] 

%のQ(引用された)動詞の意志文字列内の印刷不可能なバイトシーケンスをエスケープして、出力が明白になるようにします。

fmt.Printf("%+q \n", "Hello, 世界") // "Hello, \u4e16\u754c" 

unicode.IsSpaceは、ルーンがUnicodeのホワイトスペースプロパティで定義されたスペース文字かどうかを報告します。ラテン1空間では

'\ t'、 '\ n'、 '\ v'、 '\ f'、 '\ r'、 ''、U + 0085(NEL)、U + 00A0 (NBSP)。 サンプルコード:

package main 

import (
    "bytes" 
    "fmt" 
    "unicode" 
) 

func main() { 
    var buf bytes.Buffer 
    s := "\u4e16\u754c \u0020\r\n 世界" 
    for _, r := range s { 
     if unicode.IsSpace(r) { 
      buf.WriteString(fmt.Sprintf("\\u%04x", r)) 
     } else { 
      buf.WriteString(string(r)) 
     } 
    } 
    st := buf.String() 
    fmt.Println(st) 
} 

出力:あなたはunicode/utf8unicodestrconvstringsパッケージでより多くの機能を見つけることができます

世界\u0020\u0020\u000d\u000a\u0020\u0020世界 


https://golang.org/pkg/unicode/utf8/
https://golang.org/pkg/unicode/
https://golang.org/pkg/strings/
https://golang.org/pkg/strconv/

https://blog.golang.org/strings

関連する問題