我有字符串包含路徑如何在字符串的開頭提取零件?
string="toto.titi.tata.2.abc.def"
我想只提取2第一路徑名。所以對於上面的示例,我想從字符串中提取toto.titi
。
如何使用字符串操作?而不是與SED,AWK,grep的...字符串操作
例如:
tmp="${string#toto.titi.tata.*.}"
num1="${tmp%abc*}"
我有字符串包含路徑如何在字符串的開頭提取零件?
string="toto.titi.tata.2.abc.def"
我想只提取2第一路徑名。所以對於上面的示例,我想從字符串中提取toto.titi
。
如何使用字符串操作?而不是與SED,AWK,grep的...字符串操作
例如:
tmp="${string#toto.titi.tata.*.}"
num1="${tmp%abc*}"
不幸的是,除非你願意用eval
,我認爲你需要使用一箇中間變量:
s=${string#*.} # Remove the first component
echo ${s#*.} # Remove the second
這給出了字符串的移除了前兩個分量的值。如果你想留住他們,你可以這樣做:
# Remove one component at a time while there are more than two
while echo $string | grep -q '\..*\.'; do string=${string%.*}; done
不過說真的,你最好使用sed
或其他一些工具。
事實上,我希望輸出是'toto.titi'而不是'tata.2.abc.def' – MOHAMED
這就是答案的後半部分提供的內容。 –
好的...... split
或substring
就是答案。
string [] array = "toto.titi.tata.2.abc.def".split('.');
array[0]+array[1] ="toto.titi";
或
"toto.titi.tata.2.abc.def".substring(0,10);
你問至少2個其他問題幾乎相同,這一個。 –
@sudo_O對不起,但你錯了,請仔細閱讀其他兩個問題。他們不一樣。他們是完全不同的,但他們共享相同的principe和共享相同的輸入sring。 – MOHAMED
如果他們共享相同的原則和相同的輸入,我會稱這幾乎完全相同。隨着downvotes的數量和接近的選票,它似乎我不是唯一的一個。隨着時間的推移問非常類似的問題顯示沒有努力去嘗試學習。 –