[common] Add ASCIITrim
This commit is contained in:
parent
d94e312673
commit
9b2a8f07a3
|
@ -72,3 +72,18 @@ func IsASCIIText(s string) bool {
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: Assumes that s is ASCII as per IsASCIIText(), otherwise panics.
|
||||||
|
func ASCIITrim(s string) string {
|
||||||
|
r := make([]byte, 0, len(s))
|
||||||
|
for _, b := range []byte(s) {
|
||||||
|
if b == 32 {
|
||||||
|
continue // skip space
|
||||||
|
} else if 32 < b && b <= 126 {
|
||||||
|
r = append(r, b)
|
||||||
|
} else {
|
||||||
|
panic(fmt.Sprintf("non-ASCII (non-tab) char 0x%X", b))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return string(r)
|
||||||
|
}
|
||||||
|
|
|
@ -64,3 +64,11 @@ func TestIsASCIIText(t *testing.T) {
|
||||||
assert.True(t, IsASCIIText(v), "%q is ascii-text", v)
|
assert.True(t, IsASCIIText(v), "%q is ascii-text", v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestASCIITrim(t *testing.T) {
|
||||||
|
assert.Equal(t, ASCIITrim(" "), "")
|
||||||
|
assert.Equal(t, ASCIITrim(" a"), "a")
|
||||||
|
assert.Equal(t, ASCIITrim("a "), "a")
|
||||||
|
assert.Equal(t, ASCIITrim(" a "), "a")
|
||||||
|
assert.Panics(t, func() { ASCIITrim("\xC2\xA2") })
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue