我有很多part-00001,part-00002,...文件。
我想用这种方式:
addItem() {
let todo = this.state.input;
let todos = this.state.todos;
let id = this.state.id;
if (this.state.input == '') {
alert("enter a value");
document.getElementById('error').style.color = 'red';
document.getElementById('error').innerHTML = 'Please enter something first';
}
else {
this.setState({
todos: todos.concat(todo),
id: id + 1,
}, () => {
document.getElementById('test').value = '';
})
console.log(this.state.id);
}
}
如何在zsh中格式化" part-000xx" -like字符串i?
答案 0 :(得分:1)
可以通过以下方式完成:
typeset -Z 5 i
(使用内置typeset -Z [N]
)printf "part-%05d" $i
(使用内置printf "%05d" $i
)${(l:5::0:)i}
(使用参数扩展标记l:expr::string1:string2:
)如下所示:
typeset -Z 5 j
for ((i=0;i<1000;i++)); do
# <some command> <formatted string with i>
j=$i; echo "part-$j" # use $j here for sure the effects of below 2 lines
echo "$(printf "part-%05d" $i)"
echo "part-${(l:5::0:)j}"
done
# This outputs below:
# >> part-00000
# >> part-00000
# >> part-00000
# >> part-00001
# >> part-00001
# >> part-00001
# >> ...
# >> part-00999
以下是每个项目的说明。
typeset
-Z
[N]
如果与-L标志一起设置,则特别处理。否则,类似于-R,除非前导零用于填充而不是空白,如果第一个非空白字符是数字。数字参数是专门处理的:它们总是有资格用零填充,并且零被插入输出中的适当位置。
-zshbuiltins(1)
,typeset
, Shell Builtin Commands
printf
根据格式规范打印参数。格式化规则与C中使用的相同 -zshubuiltins(1)
,printf
, Shell Builtin Commands
l
:EXPR ::字符串1 ::字符串2:
在左侧填充生成的单词。如果需要,每个单词都将被截断,并放置在 expr 字符宽的字段中 参数:string1:和:string2:是可选的;既不是第一个,也不是两个都可以。请注意,必须为三个参数中的每一个使用相同的分隔符对。如果没有给出string1,左边的空格将填充 string1 (根据需要连接)或空格。如果同时给出 string1 和 string2 ,则 string2 会直接插入每个单词的左侧,必要时会被截断,然后才能使用string1产生任何剩余的填充物 -zshexpn(1)
, Parameter Expansion Flags