在Java中如何从string获取子string,直到字符C?

我有一个string(这是一个命名约定之后的文件名) abc.def.ghi

我想先提取子string. (即点)

在java文档api中,我似乎无法find一个string中的方法。
我错过了什么吗? 怎么做?

看看String.indexOfString.substring

确保你检查indexOf为-1。

你可以分割string..

 public String[] split(String regex) 

请注意,java.lang.String.split使用分隔符的正则expression式值。 基本上这样…

 String filename = "abc.def.ghi"; // full file name String[] parts = filename.split("\\."); // String array, each element is text between dots String beforeFirstDot = parts[0]; // Text before the first dot 

当然,这是分裂成多条线来维持的。 它可以写成

 String beforeFirstDot = filename.split("\\.")[0]; 

接受的答案是正确的,但它并没有告诉你如何使用它。 这就是你如何一起使用indexOf和substring函数。

 String filename = "abc.def.ghi"; // full file name int iend = filename.indexOf("."); //this finds the first occurrence of "." //in string thus giving you the index of where it is in the string // Now iend can be -1, if lets say the string had no "." at all in it ie no "." is not found. //So check and account for it. if (iend != -1) String subString= filename.substring(0 , iend); //this will give abc 

如果你的项目已经使用commons-lang ,那么StringUtils为此提供了一个很好的方法:

 String filename = "abc.def.ghi"; String start = StringUtils.substringBefore(filename, "."); // returns "abc" 

见javadoc [2.6] [3.1]

或者你可以尝试类似的东西

"abc.def.ghi".substring(0,"abc.def.ghi".indexOf(c)-1);

在java.lang.String中,你得到了一些像indexOf()这样的方法:它返回一个字符/string的第一个索引。 和lstIndexOf:它返回String / char的最后一个索引

从Java文档:

  public int indexOf(int ch) public int indexOf(String str) 

返回指定字符第一次出现的string中的索引。

如何使用正则expression式?

 String firstWord = filename.replaceAll("\\..*","") 

这将从第一个点到最后一个点用“”来代替(即清除它,让你得到你想要的)

这是一个testing:

 System.out.println("abc.def.hij".replaceAll("\\..*", ""); 

输出:

 abc