Zshで文字列のインデックスと部分文字列を見つけますか?

Zshで文字列のインデックスと部分文字列を見つけますか?

よく訪れるWebページを閲覧するのに役立つ関数をzshrcファイルに作成しています。たとえば、通話が61b開始されます。https://sp21.datastructur.es/61b lab6熱予定ですhttps://sp21.datastructur.es/materials/lab/lab6/lab6、そして61b proj2開かれますhttps://sp21.datastructur.es/materials/proj/proj2/proj2。 URLでorを使用できるように、lab6orのサブストリングを生成する必要があります。proj2labproj

function 61b() {
  if [ -n "$1" ]; then
    open https://sp21.datastructur.es/materials/??/$1/$1
  else
    open https://sp21.datastructur.es/
  fi
}

私はそこに何を入れますか??。私はほとんどすべてを試しました。

ベストアンサー1

より複雑な形式を使用して、多くの文字列操作を実行できます。パラメータ拡張形態または(またはそれらの組み合わせ)。${stuffPARAM}${PARAMstuff}

たとえば、${1%%[0-9]##}最初のパラメータ($1)は数字(ワイルドカードパターン [0-9]##)は()の末尾から削除されます${…%%…}setopt extended_globワイルドカードパターンが機能するには、それをまたは関数[0-9]##に入れる必要があります。.zshrc

function 61b() {
  setopt local_options extended_glob unset
  if [ -n "$1" ]; then
    open https://sp21.datastructur.es/materials/${1%%[0-9]##}/$1/$1
  else
    open https://sp21.datastructur.es/
  fi
}

[0-9]##<->代わりに、任意の範囲の数字を表すを使用できます。 (「数字」は、10進表記で表される非負の整数を表すため、一連の数字と同じです。)

おすすめ記事