一個soluti 25限制)
included.
#9個字符on將分別解析每個字符,跟蹤所檢查字符的數量以及當前字符是否爲空格。
在這個例子中,我們使用三個變量; $ inputvar,它應該保存整個字符串並且不會被更改; $ resultvar,它將保存切割部分;和$ i,它在循環中使用但將被覆蓋。
for ((i=0;i>-1;i++)); do #Start $i at zero, increment every loop, and don't break normally.
if [[ $i -le $((25 - 2)) ]]; then #If $i is less than or equal to 25*
resultvar="$resultvar""${inputvar:$i:1}" #Add character at position $i to $resultvar
else #If $i is greater than 25
if [[ ${inputvar:$i:1} == " " || -z ${textvar:$i:1} ]]; then #If character is a space
break #Exit loop; we're done here.
else #Otherwise
resultvar="$resultvar""${inputvar:$i:1}" #Add to $resultvar like before
fi
fi
done
*我有長度檢查而不是$((25 - 2))。這是由於我們從$ i = 0開始,以及流程訂單如何檢查空白字符。這兩個都會導致我們有效地返回一個比預期更長的字符串,所以通過從字符串長度中減去兩個字符來抵消。
該聲明也可以合併到一行中;
for ((i=0;i>-1;i++)); do if [[ $i -le $((cutlength - 2)) ]]; then resultvar="$resultvar""${textvar:$i:1}"; else if [[ ${textvar:$i:1} == " " || -z ${textvar:$i:1} ]]; then break; else resultvar="$resultvar""${textvar:$i:1}"; fi; fi; done
這不是一個優雅的解決方案,但應該完成工作。
請將示例輸入和您希望的輸出樣本輸入添加到您的問題中。 – Cyrus
如果25個字符在一個單詞的中間,會發生什麼?使行少於25個字符? 「切割」是指「移除其餘部分」還是「插入換行」? (請參閱賽勒斯的評論。) –
另外,超過25個字符的單詞應該發生什麼? – Siguza