传递0作为限制参数可以防止尾随空字符串,但是如何防止前导空字符串?
例如
String[] test = "/Test/Stuff".split("/");
Run Code Online (Sandbox Code Playgroud)
产生一个带有"","测试","东西"的数组.
是的,我知道我可以推出自己的Tokenizer ...但是StringTokenizer的API文档说
"StringTokenizer是一个遗留类,出于兼容性原因而保留,但在新代码中不鼓励使用它.建议任何寻求此功能的人都使用拆分"
Joe*_*rdi 46
你最好的选择可能只是删除任何前导分隔符:
String input = "/Test/Stuff";
String[] test = input.replaceFirst("^/", "").split("/");
Run Code Online (Sandbox Code Playgroud)
你可以把它放在一个方法中,使它更通用:
public String[] mySplit(final String input, final String delim)
{
return input.replaceFirst("^" + delim, "").split(delim);
}
String[] test = mySplit("/Test/Stuff", "/");
Run Code Online (Sandbox Code Playgroud)
adr*_*ale 22
Apache Commons有一个实用方法,正是如此: org.apache.commons.lang.StringUtils.split
实际上在我们公司,我们现在更喜欢使用这种方法来分割我们所有的项目.
我不认为你有办法用内置split方法做到这一点.所以你有两个选择:
1)自己分手
2)在调用split后迭代数组并删除空元素
如果你自己进行拆分,你可以将这两个选项结合起来
public List<String> split(String inString)
{
List<String> outList = new ArrayList<>();
String[] test = inString.split("/");
for(String s : test)
{
if(s != null && s.length() > 0)
outList.add(s);
}
return outList;
}
Run Code Online (Sandbox Code Playgroud)
或者你可以在调用split之前检查分隔符是否在第一个位置,如果是,则忽略第一个字符:
String delimiter = "/";
String delimitedString = "/Test/Stuff";
String[] test;
if(delimitedString.startsWith(delimiter)){
//start at the 1st character not the 0th
test = delimitedString.substring(1).split(delimiter);
}
else
test = delimitedString.split(delimiter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39029 次 |
| 最近记录: |