我如何删除java中第一次和最后一次出现的句子

时间:2013-09-30 07:27:47

标签: java regex

我有以下一行:|A|B|C|D|100|E|GEN|smsplus|11|11|11|我想删除|的第一次和最后一次。

我必须先检查|是否可以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 

||的可能性,这就是为什么我不想对此进行任何解释。

谢谢你宝贵的时间。

4 个答案:

答案 0 :(得分:7)

你也许可以使用正则表达式:

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

并替换为$1

ideone demo

如果字符串的开头和结尾都不是|,那么就没有替代品。

编辑:根据您的上一条评论,如果您要删除|,如果它位于字符串的开头和/或末尾,则使用OR运算符({{1}在那个问题中,我认为= P):

|

替换为空(空字符串^\\||\\|$


EDIT2:

如果第一个正则表达式更接近您的需要但又想删除多个管道,请添加量词:

""

如果第二个正则表达式(在第一次编辑中)是您需要的,但也想删除多个管道,请再次添加量词!

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

请注意,替换字符串在两种情况下都保持不变

答案 1 :(得分:4)

您的评论让我相信您想要这样做:

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

这将更改以下每个字符串:

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

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

regex101.com上查看。

答案 2 :(得分: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

答案 3 :(得分: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, "|");