在Java中如何从string获取子string,直到字符C?
我有一个string(这是一个命名约定之后的文件名) abc.def.ghi
我想先提取子string.
(即点)
在java文档api中,我似乎无法find一个string中的方法。
我错过了什么吗? 怎么做?
看看String.indexOf
和String.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