我有以下一行:|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
||
的可能性,这就是为什么我不想对此进行任何解释。
答案 0 :(得分:7)
你也许可以使用正则表达式:
^\\|(.*)\\|$
并替换为$1
:
如果字符串的开头和结尾都不是|
,那么就没有替代品。
编辑:根据您的上一条评论,如果您要删除|
,如果它位于字符串的开头和/或末尾,则使用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, "|");