2017-03-29 71 views
0

我試圖刪除第一個壞字符(CAP字母+點+空格)。單位替換某些字符組合

A.運輸長度
C.總高度
總體Weigth
X.最大切割高度

我想類似的東西,但它不工作:

string.replaceAll("[A-Z]+". ", ""); 

結果應該是這樣的:

單位

運輸長度
總高度
總體Weigth
最大切割高度

+0

歡迎來到堆棧溢出!請[編輯]你的問題,以顯示[你迄今爲止所嘗試的](http://whathaveyoutried.com)。你至少應該包括一個你遇到問題的代碼大綱(但最好是[mcve]),然後我們可以嘗試幫助解決具體問題。你還應該閱讀[問]。 –

回答

1

這應該工作:

string.replaceAll("^[A-Z]\\. ", "") 

例子

"A. Shipping Length of Unit".replaceAll("^[A-Z]\\. ", "") 
// => "Shipping Length of Unit" 
"Overall Weigth".replaceAll("^[A-Z]\\. ", "") 
// => "Overall Weigth" 
+0

謝謝,它工作。我有更多的問題,因爲空間不是一個空間,看起來像但它不是,我花了很多時間來注意它 –

0

試試這個:

myString.replaceAll("([A-Z]\\.\\s)","") 
  • [A-Z]:匹配A和Z.
  • \之間的範圍中的單個字符。 :匹配點字符。
  • \ s:匹配空格字符。
+0

爲什麼你用一個空白替換「剪切內容」?你認爲如果文件行將是「A.B的結果應該是C」會發生什麼,這是OP的期望? – Tom

+1

哦,這是一個錯字。感謝您通知我。關於B.應該是C.,你是對的,我會去做。 – Asew

0

不看你的代碼很難說出問題。但是從我的經驗,這是通常我們使我們的最初幾天的通病:

String string = "A. Test String"; 
string.replaceAll("^[A-Z]\\. ", ""); 
System.out.println(string); 

字符串是Java中的不變類。一旦你創建了一個對象,它就意味着它不能被改變。所以在這裏,當我們在現有的String中進行replaceAll時,只需創建一個新的String對象。您需要分配到一個新的變量或覆蓋現有值類似下面:

String string = "A. Test String"; 
string = string.replaceAll("^[A-Z]\\. ", ""); 
System.out.println(string); 
1
input.replaceAll("[A-Z]\\.\\s", ""); 

[A-Z]一個大寫字符從A匹配到Z
\。匹配點字符
\ S匹配任何空白字符

然而,這將取代該模式相匹配的所有字符序列。 對於匹配的開始序列,你應該使用

input.replaceAll("^[A-Z]\\.\\s", ""); 
+0

你可以添加一些解釋,你做了什麼。並非每個人都擅長正則表達式。 (儘管該字符串中的{1}可以被刪除。) – KarelG

+0

謝謝,我添加了一些解釋並刪除了{1} – Hatem

相關問題