如何按字符串的最后一点拆分?

时间:2015-12-22 08:38:08

标签: java string split

我知道我可以像这样分割字符串

String myString = "foo.bar";    
List<String> strings = Arrays.asList(myString.split("."));

但是我的字符串看起来像20151221.1051.Test.01.properties,它可以有任意数量的点,我想在结尾删除.properties(仅限最后一个点)。

6 个答案:

答案 0 :(得分:6)

使用myString.lastIndexOf(".")获取最后一个点的索引。

例如,如果您确定输入字符串至少包含一个点:

String name = myString.substring(0,myString.lastIndexOf("."));

答案 1 :(得分:2)

如果要使用split,则需要转义点(拆分需要正则表达式)。

List<String> strings = Arrays.asList(myString.split("\\."));

如果您只需删除最后一部分,则可以使用replaceAll和正则表达式:

myString = myString.replaceAll("\\.[^.]*$", "");

说明:

  • \\.寻找一个点
  • [^.]*查找0个或更多非点字符
  • $是字符串的结尾

答案 2 :(得分:0)

你可以使用这样的子串方法来解决这个问题:

string test = "20151221.1051.Test.01.properties"
test = test.Substring(0, test.LastIndexOf('.'))

希望有所帮助!

答案 3 :(得分:0)

你的代码几乎就在那里:)一个小小的改变可以获取你所需要的东西:)

以下是您可以做的事情:

String myString = "201512211051.Test.01.properties";    
List<String> strings = Arrays.asList(myString.split("."));
strings.set(strings.size() - 1,"");

现在你已经替换了split数组的最后一部分:)加入列表来创建字符串。使用任何方式取悦你:)循环元素或使用ios 8中提供的String.join:)

答案 4 :(得分:0)

尝试使用它:

 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

答案 5 :(得分:0)

看起来你的问题更多的是关于获取文件名减去扩展名。有足够的开源库可以帮助您完成这项工作。例如:Apache Commons IO: https://commons.apache.org/proper/commons-io/apidocs/index.html?org/apache/commons/io/FileUtils.html

有一个名为getBaseName()的方法可以帮助您获取文件名减去完整路径并减去扩展名。另一个名为getExtension()的方法只能获取文件的扩展名。切片和骰子你想要的一切!