移动单词中的字母位置

发布于 2024-11-30 10:51:44 字数 216 浏览 1 评论 0原文

我想要一个命令/函数,最好是 bash,它接受一个单词/字符串和一个数字,并将单词中的字母位置移动该数字,将溢出旋转回开头。

例如,输入 stack2 输出将为 cksta

我曾考虑过使用 tr 但我不能弄清楚如何使其通用以适用于任何单词,而不仅仅是翻译目标单词中的特定字母。

I want a command/function, preferably bash, that takes a word/string and a number and shifts the letter positions in the word by that number, rotating the overflow back to the beginning.

e.g. with input stack and 2 the output would be cksta

I have thought about using tr but I couldn't quite figure out how to make it general so as to work with any word, and not just translating specific letters from a target word.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狠疯拽 2024-12-07 10:51:44

您可以使用 bash 的内置字符串操作:

#!/bin/bash

string=$1
shift=$2

length=${#string}
echo ${string:$length-$shift:$shift}${string:0:$length-$shift}

示例:

$ ./script stack 1
kstac
$ ./script stack 2
cksta
$ ./script stack 3
ackst
$ ./script stack 4
tacks

You can use bash's built-in string manipulation:

#!/bin/bash

string=$1
shift=$2

length=${#string}
echo ${string:$length-$shift:$shift}${string:0:$length-$shift}

Example:

$ ./script stack 1
kstac
$ ./script stack 2
cksta
$ ./script stack 3
ackst
$ ./script stack 4
tacks
遗忘曾经 2024-12-07 10:51:44

另一种常见的方法是“双倍”字符串,这可以简化子字符串:

str=stack
len=${#str}
n=2
strstr=$str$str
echo ${strstr:$len-$n:$len}   # -> cksta

Another common approach is to "double" the string, which simplifies the substringery:

str=stack
len=${#str}
n=2
strstr=$str$str
echo ${strstr:$len-$n:$len}   # -> cksta
御弟哥哥 2024-12-07 10:51:44

稍微短一点的是负值的使用,从右数:

string=$1
shift=$2
length=${#string}
echo ${string: -shift}${string:0:length-shift}

因为 :- 有自己的含义,所以你必须在它前面放一个空格。

A bit shorter is the usage of negative values, to count from right:

string=$1
shift=$2
length=${#string}
echo ${string: -shift}${string:0:length-shift}

since :- has an own meaning, you have to put a blank before it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文