2013-03-26 37 views
-1
String sequence = "html1body2ul3li1p5a"; 

我想使用Java中的replace方法從序列中刪除最後一位數字(即5)。如何捕獲從正則表達式序列中看到的第一個數字?所有的非數字都是字母。如何從序列中刪除最後一位數字?

+0

你確定你想使用正則表達式嗎? http://programmers.stackexchange.com/questions/10998/what-does-the-jamie-zawinskis-quotation-about-regular-expressions-mean – 2013-03-26 03:18:54

+0

你想捕捉還是替換? – 2013-03-26 03:24:07

+0

@ExplosionPills替換 – 2013-03-26 03:24:43

回答

1

你可以這樣做:

sequence = sequence.replaceAll("(.*)\\d", "$1"); 
+0

您甚至不需要在'\\ d'之後匹配任何內容。 '(。*)\\ d'就足夠了。請注意,當字符串包含新行時,說明可能存在差異。 – nhahtdh 2013-03-26 04:23:17

+0

不錯的優化,已更新 – Reimeus 2013-03-26 12:53:30

0
sequence.replaceFirst("\\d([^\\d]*)$", "$1"); 
+0

您假設從最後一個數字到結尾的字符串只有1個字符 – nhahtdh 2013-03-26 04:26:02

0

這個怎麼樣?

String sequence = "html1body2ula3li1p5a"; 
System.out.println("Remove last char "+sequence.substring(1,sequence.length()-1)); 
System.out.println("Replace last char"+sequence.replaceAll("a$","XXX")); 
+0

也就是說,如果您已經知道哪裏數字是。這不適用於一般情況。 – nhahtdh 2013-03-26 04:23:57

0

你可以試試這個太...

String sequence = "html1body2ul3li1p5a"; 
sequence = sequence.replaceAll("(\\d+)(?!.*\\d)", ""); 
+0

您捕獲的不止是「最後一位數字」。您正在捕獲最後連續的數字序列。 – nhahtdh 2013-03-26 04:27:34

0

如果你只需要更換的最後一個字符0-9,你可以使用:

myString.replaceAll("\\d+(?=\D*$)", "") 

這將取代過去的數字在沒有任何應用的字符串。

myString.replaceAll("\\d+(?=\D*$)", "") 

這將替換數字的最後一組與任何施加的串(例如,在sdfsdflih193a93)英寸

相關問題