如何按字符串的最后一点拆分?
How can I split by the last point of a String?
我知道我可以像这样拆分字符串
String myString = "foo.bar";
List<String> strings = Arrays.asList(myString.split("."));
但是我的字符串看起来像20151221.1051.Test.01.properties
,它可以有任意数量的点,我想删除最后的.properties
(只删除最后一个点)。
使用myString.lastIndexOf(".")
获取最后一个点的索引。
例如,如果您确定输入的字符串至少包含一个点:
String name = myString.substring(0,myString.lastIndexOf("."));
如果你想使用split
,你需要转义点(split需要一个正则表达式)。
List<String> strings = Arrays.asList(myString.split("\."));
如果你只需要删除最后一部分,你可以使用replaceAll
和一个正则表达式:
myString = myString.replaceAll("\.[^.]*$", "");
解释:
\.
寻找一个点
[^.]*
查找 0 个或多个非点字符
$
是字符串的结尾
您可以使用这样的子字符串方法解决该问题:
string test = "20151221.1051.Test.01.properties"
test = test.Substring(0, test.LastIndexOf('.'))
希望对您有所帮助!
您的代码就快完成了:) 稍作改动即可获得您需要的东西:)
您可以执行以下操作:
String myString = "201512211051.Test.01.properties";
List<String> strings = Arrays.asList(myString.split("."));
strings.set(strings.size() - 1,"");
现在您已经替换了拆分数组的最后一部分 :) 加入列表以创建字符串。使用您喜欢的任何方式 :) 循环遍历元素或使用 ios 8 中提供的 String.join :)
尝试使用这个:
String myString = "20151221.1051.Test.01.properties";
List<String> strings = Arrays.asList(myString.substring(0,myString.lastIndexOf(".")).split("\.(?=[^\.])"));
for (String string : strings) {
System.out.println(string);
}
使用 myString.substring(0,myString.lastIndexOf("."))
文件扩展名和拆分 split("\.(?=[^\.])")
你有输出:
20151221
1051
Test
01
看来您的问题更多是关于获取文件名减去扩展名。有足够多的开源库可以帮助您完成这项工作。例如:Apache Commons IO:
https://commons.apache.org/proper/commons-io/apidocs/index.html?org/apache/commons/io/FileUtils.html
有一个名为 getBaseName() 的方法可以帮助您获取减去完整路径和减去扩展名的文件名。另一个名为 getExtension() 的方法只会为您提供文件的扩展名。随心所欲地切片和切块!
我知道我可以像这样拆分字符串
String myString = "foo.bar";
List<String> strings = Arrays.asList(myString.split("."));
但是我的字符串看起来像20151221.1051.Test.01.properties
,它可以有任意数量的点,我想删除最后的.properties
(只删除最后一个点)。
使用myString.lastIndexOf(".")
获取最后一个点的索引。
例如,如果您确定输入的字符串至少包含一个点:
String name = myString.substring(0,myString.lastIndexOf("."));
如果你想使用split
,你需要转义点(split需要一个正则表达式)。
List<String> strings = Arrays.asList(myString.split("\."));
如果你只需要删除最后一部分,你可以使用replaceAll
和一个正则表达式:
myString = myString.replaceAll("\.[^.]*$", "");
解释:
\.
寻找一个点[^.]*
查找 0 个或多个非点字符$
是字符串的结尾
您可以使用这样的子字符串方法解决该问题:
string test = "20151221.1051.Test.01.properties"
test = test.Substring(0, test.LastIndexOf('.'))
希望对您有所帮助!
您的代码就快完成了:) 稍作改动即可获得您需要的东西:)
您可以执行以下操作:
String myString = "201512211051.Test.01.properties";
List<String> strings = Arrays.asList(myString.split("."));
strings.set(strings.size() - 1,"");
现在您已经替换了拆分数组的最后一部分 :) 加入列表以创建字符串。使用您喜欢的任何方式 :) 循环遍历元素或使用 ios 8 中提供的 String.join :)
尝试使用这个:
String myString = "20151221.1051.Test.01.properties";
List<String> strings = Arrays.asList(myString.substring(0,myString.lastIndexOf(".")).split("\.(?=[^\.])"));
for (String string : strings) {
System.out.println(string);
}
使用 myString.substring(0,myString.lastIndexOf("."))
文件扩展名和拆分 split("\.(?=[^\.])")
你有输出:
20151221
1051
Test
01
看来您的问题更多是关于获取文件名减去扩展名。有足够多的开源库可以帮助您完成这项工作。例如:Apache Commons IO: https://commons.apache.org/proper/commons-io/apidocs/index.html?org/apache/commons/io/FileUtils.html
有一个名为 getBaseName() 的方法可以帮助您获取减去完整路径和减去扩展名的文件名。另一个名为 getExtension() 的方法只会为您提供文件的扩展名。随心所欲地切片和切块!