0

我有以下一行:|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

4 回答 4

6

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

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

并替换为$1

ideone演示

如果字符串的开头和结尾不是两者|,则不会有替换。

编辑:根据您的最后一条评论,如果您想删除它是否位于字符串的开头和/或结尾,请使用 OR 运算符(我认为该问题|太多=P):|

^\\||\\|$

替换为空(空字符串""


编辑2:

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

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

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

^\\|+|\\|+$

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

于 2013-09-30T07:35:49.063 回答
4

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

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

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

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

到同一个字符串A|B|C

regex101.com上查看。

于 2013-09-30T07:46:21.737 回答
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
于 2013-09-30T07:29:18.153 回答
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, "|");
于 2013-09-30T07:32:22.730 回答