2017-03-29 70 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

相关问题