我有以下一行:|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 ||的可能性--这就是为什么我不想给出任何解释的原因。
谢谢你宝贵的时间。
发布于 2013-09-30 07:46:21
你的评论让我相信你想这样做:
String result = subject.replaceAll("^\\||\\|$", "");这将更改以下每一个字符串:
|A|B|C|
|A|B|C
A|B|C|
A|B|C到相同的字符串A|B|C。
请在regex101.com上看到。
发布于 2013-09-30 07:35:49
您也许可以使用regex:
^\\|(.*)\\|$并由$1代替
ideone演示
如果字符串的开始和结束都不是|,则不会有替换。
编辑:根据您的最后一个注释,如果您希望删除字符串的开头和/或结尾处的|,请使用OR操作符(我认为这个问题中有太多的| =P):
^\\||\\|$以无替换(空字符串"")
EDIT2:
如果第一个正则表达式更接近所需,但也希望删除多个管道,则添加量词:
^\\|+(.*)\\|+$如果第二个regex (在第一个编辑中)是您所需要的,但也希望删除多个管道,再次添加量词!
^\\|+|\\|+$请注意,替换字符串在这两种情况下都保持不变。
发布于 2013-09-30 07:29:18
使用indexOf()和来自java.lang.String包的lastIndexOf()
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|11https://stackoverflow.com/questions/19088650
复制相似问题