2013-09-30 37 views
0

我有以下行:|A|B|C|D|100|E|GEN|smsplus|11|11|11|,我想刪除第一個和最後一個出現的|如何刪除java中第一個和最後一個出現的句子

我必須先檢查|可在first and last

我相信,這將帶來我一些下降,但票真的不知道如何去。

編輯

我也有檢查以下內容:

A|B|C|D|100|E|GEN|smsplus|11|11|11| and |A|B|C|D|100|E|GEN|smsplus|11|11|11 and there is no 

可能性||這就是爲什麼我不想給出相同的任何解釋。

感謝您寶貴的時間。

+0

重複此問題:http://stackoverflow.com/questions/2088037/trim-characters-in-java – justhalf

+0

我認爲它需要正則表達式的解決方案,而不是substring或indexOf。 –

+0

@justhalf這不是你提供的東西的重複:) –

回答

4

您的意見使我相信,你想這樣做:

String result = subject.replaceAll("^\\||\\|$", ""); 

這將改變每個下列字符串:

|A|B|C| 
|A|B|C 
A|B|C| 
A|B|C 

到相同的字符串A|B|C

請參閱regex101.com

+0

感謝這個我一直在尋找:) –

3

使用indexOf()lastIndexOf()java.lang.String

String s="|A|B|C|D|100|E|GEN|smsplus|11|11|11|"; 
    s=s.substring(s.indexOf("|"),s.lastIndexOf("|")); 
    System.out.println(s); //Prints A|B|C|D|100|E|GEN|smsplus|11|11|11 
+0

I認爲他想要一個正則表達式解決方案 –

+0

他沒有提到,只是他標記 – kark

+1

@kark你會提供一些代碼示例嗎? –

2

嘗試,

String input = "|A|B|C|D|100|E|GEN|smsplus|11|11|11|"; 
input = input.substring(1, input.length()-1); 

或使用StringUtils.removeStart, removeEnd

StringUtils.removeStart(input, "|"); 
StringUtils.removeEnd(input, "|"); 

StringUtils.strip(input, "|"); 
+0

@ newuser ...你知道'|'哪裏會出現一行 – kark

+1

如果你想使用StringUtils,你可以使用StringUtils.strip(input,「|」) – justhalf

+0

@kark提問者給出輸入字符串。因爲只有我這樣做 – newuser

7

您或許可以使用正則表達式:

^\\|(.*)\\|$ 

而且通過$1取代:

ideone demo

如果字符串的開始和結束都不能同時|,就會有沒有替代品。

編輯:根據你最後的評論,如果你想刪除|,如果它是在字符串的開始和/或結尾,然後使用OR運算符(這個問題太多了|我想= P):

^\\||\\|$ 

通過任何替換(空字符串""


EDIT2:

如果第一個正則表達式是更接近你所需要的,而且要刪除多個管道,加量詞:

^\\|+(.*)\\|+$ 

如果第二個正則表達式(在第一編輯)是你所需要的,而且要刪除多個管道,再次添加量詞!

^\\|+|\\|+$ 

注意,替換字符串保持不變,在這兩種情況下

+0

這個最好的答案應該是可以接受的= D – justhalf

+1

根據評論,可能只有一個字符串是'|',應該刪除。 –

+0

@TimPietzcker是的,我剛纔看到它。 ..這個問題還沒有很好地制定: – Jerry

相關問題