mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 21:44:16 +00:00
60bca14b37
We need a way to encode arbitrary strings into valid fish variable names. It would also be nice if we could convert strings to valid URLs without using the slow and hard to understand `__fish_urlencode` function. In particular, eliminating the need to manipulate the locale. Fixes #4150
282 lines
3.8 KiB
Text
282 lines
3.8 KiB
Text
# string match -r -v "c.*" dog can cat diz
|
|
dog
|
|
diz
|
|
exit 0
|
|
|
|
# string match -q -r -v "c.*" dog can cat diz
|
|
exit 0
|
|
|
|
# string match -v "c*" dog can cat diz
|
|
dog
|
|
diz
|
|
exit 0
|
|
|
|
# string match -q -v "c*" dog can cat diz
|
|
exit 0
|
|
|
|
# string match -v "d*" dog dan dat diz
|
|
exit 1
|
|
|
|
# string match -q -v "d*" dog dan dat diz
|
|
exit 1
|
|
|
|
# string match -r -v x y
|
|
y
|
|
exit 0
|
|
|
|
# string match -r -v x x
|
|
exit 1
|
|
|
|
# string match -q -r -v x y
|
|
exit 0
|
|
|
|
# string match -q -r -v x x
|
|
exit 1
|
|
|
|
# string length "hello, world"
|
|
12
|
|
|
|
# string length -q ""
|
|
zero length
|
|
|
|
# string sub --length 2 abcde
|
|
ab
|
|
|
|
# string sub -s 2 -l 2 abcde
|
|
bc
|
|
|
|
# string sub --start=-2 abcde
|
|
de
|
|
|
|
# string split . example.com
|
|
example
|
|
com
|
|
|
|
# string split -r -m1 / /usr/local/bin/fish
|
|
/usr/local/bin
|
|
fish
|
|
|
|
# string split "" abc
|
|
a
|
|
b
|
|
c
|
|
|
|
# seq 3 | string join ...
|
|
1...2...3
|
|
|
|
# string trim " abc "
|
|
abc
|
|
|
|
# string trim --right --chars=yz xyzzy zany
|
|
x
|
|
zan
|
|
|
|
# echo \x07 | string escape
|
|
\cg
|
|
|
|
# string escape --style=script 'a b#c"\'d'
|
|
a\ b\#c\"\'d
|
|
|
|
# string escape --style=url 'a b#c"\'d'
|
|
a%20b%23c%22%27d
|
|
|
|
# string escape --style=url \na\nb%c~d\n
|
|
%0Aa%0Ab%25c~d%0A
|
|
|
|
# string escape --style=var 'a b#c"\'d'
|
|
a_20_62_23_63_22_27_64_
|
|
|
|
# string escape --style=script a\nghi_
|
|
a_0A_ghi__
|
|
|
|
# string escape --style=var 'abc'
|
|
abc
|
|
|
|
# string escape --style=var '_a_b_c_'
|
|
__a__b__c__
|
|
|
|
# string escape --style=var -- -
|
|
_2D_
|
|
|
|
# string match "?" a
|
|
a
|
|
|
|
# string match "a*b" axxb
|
|
axxb
|
|
|
|
# string match -i "a??B" Axxb
|
|
Axxb
|
|
|
|
# echo "ok?" | string match "*\?"
|
|
ok?
|
|
|
|
# string match -r "cat|dog|fish" "nice dog"
|
|
dog
|
|
|
|
# string match -r "(\d\d?):(\d\d):(\d\d)" 2:34:56
|
|
2:34:56
|
|
2
|
|
34
|
|
56
|
|
|
|
# string match -r "^(\w{2,4})\g1\$" papa mud murmur
|
|
papa
|
|
pa
|
|
murmur
|
|
mur
|
|
|
|
# string match -r -a -n at ratatat
|
|
2 2
|
|
4 2
|
|
6 2
|
|
|
|
# string match -r -i "0x[0-9a-f]{1,8}" "int magic = 0xBadC0de;"
|
|
0xBadC0de
|
|
|
|
# string replace is was "blue is my favorite"
|
|
blue was my favorite
|
|
|
|
# string replace 3rd last 1st 2nd 3rd
|
|
1st
|
|
2nd
|
|
last
|
|
|
|
# string replace -a " " _ "spaces to underscores"
|
|
spaces_to_underscores
|
|
|
|
# string replace -r -a "[^\d.]+" " " "0 one two 3.14 four 5x"
|
|
0 3.14 5
|
|
|
|
# string replace -r "(\w+)\s+(\w+)" "\$2 \$1 \$\$" "left right"
|
|
right left $
|
|
|
|
# string replace -r "\s*newline\s*" "\n" "put a newline here"
|
|
put a
|
|
here
|
|
|
|
# string replace -r -a "(\w)" "\$1\$1" ab
|
|
aabb
|
|
|
|
# string replace --filter x X abc axc x def jkx
|
|
aXc
|
|
X
|
|
jkX
|
|
|
|
# string replace --regex -f "\d" X 1bc axc 2 d3f jk4 xyz
|
|
Xbc
|
|
X
|
|
dXf
|
|
jkX
|
|
|
|
# string length
|
|
missing argument returns 1
|
|
|
|
# string match -r -v "[dcantg].*" dog can cat diz
|
|
no regexp invert match
|
|
|
|
# string match -v "???" dog can cat diz
|
|
no glob invert match
|
|
|
|
# string match -rvn a bbb
|
|
1 3
|
|
|
|
# string repeat -n 2 "foo"
|
|
foofoo
|
|
|
|
# string repeat --count 2 "foo"
|
|
foofoo
|
|
|
|
# echo foo | string repeat -n 2
|
|
foofoo
|
|
|
|
# string repeat -n2 -q "foo"
|
|
exit 0
|
|
|
|
# string repeat -n2 --quiet "foo"
|
|
exit 0
|
|
|
|
# string repeat -n0 "foo"
|
|
exit 1
|
|
|
|
# string repeat -n0
|
|
exit 1
|
|
|
|
# string repeat -m0
|
|
exit 1
|
|
|
|
# string repeat -n1 -N "there is "
|
|
there is no newline
|
|
|
|
# string repeat -n1 --no-newline "there is "
|
|
there is no newline
|
|
|
|
# string repeat -n10 -m4 "foo"
|
|
foof
|
|
|
|
# string repeat -n10 --max 5 "foo"
|
|
foofo
|
|
|
|
# string repeat -n3 -m20 "foo"
|
|
foofoofoo
|
|
|
|
# string repeat -m4 "foo"
|
|
foof
|
|
|
|
# string repeat ""
|
|
string repeat empty string failed
|
|
|
|
# string repeat -n3 ""
|
|
string repeat empty string failed
|
|
|
|
# string match -e x abc dxf xyz jkx x z
|
|
dxf
|
|
xyz
|
|
jkx
|
|
x
|
|
|
|
# string match x abc dxf xyz jkx x z
|
|
x
|
|
|
|
# string match --entire -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
|
abxc
|
|
bye
|
|
aaabyz
|
|
kaabxz
|
|
abbxy
|
|
caabxyxz
|
|
|
|
# string match -r "a*b[xy]+" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
|
abx
|
|
by
|
|
aaaby
|
|
aabx
|
|
bxy
|
|
aabxyx
|
|
|
|
# string match --entire -r "a*b([xy]+)" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
|
abxc
|
|
x
|
|
bye
|
|
y
|
|
aaabyz
|
|
y
|
|
kaabxz
|
|
x
|
|
abbxy
|
|
xy
|
|
caabxyxz
|
|
xyx
|
|
|
|
# string match -r "a*b([xy]+)" abc abxc bye aaabyz kaabxz abbxy abcx caabxyxz
|
|
abx
|
|
x
|
|
by
|
|
y
|
|
aaaby
|
|
y
|
|
aabx
|
|
x
|
|
bxy
|
|
xy
|
|
aabxyx
|
|
xyx
|