java Java从字符串中获取子字符串值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17393503/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java get Substring value from String
提问by NovusMobile
I have string
我有字符串
String path = /mnt/sdcard/Album/album3_137213136.jpg
I want to only strings album3
.
How can I get that substring.
我只想字符串album3
。我怎样才能得到那个子字符串。
I am using substring through index.
Is there any other way because album number is getting changed because it will fail in like album9, album10
.
我正在使用substring through index.
有没有其他方法,因为专辑编号正在更改,因为它会像album9, album10
.
采纳答案by Brian
Obligatory regex solution using String.replaceAll
:
强制性正则表达式解决方案使用String.replaceAll
:
String album = path.replaceAll(".*(album\d+)_.*", "");
Use of it:
它的使用:
String path = "/mnt/sdcard/Album/album3_137213136.jpg";
String album = path.replaceAll(".*(album\d+)_.*", "");
System.out.println(album); // prints "album3"
path = "/mnt/sdcard/Album/album21_137213136.jpg";
album = path.replaceAll(".*(album\d+)_.*", "");
System.out.println(album); // prints "album21"
回答by Ted Hopp
You can use a regular expression, but it seems like using index
is the simplest in this case:
您可以使用正则表达式,但index
在这种情况下使用似乎是最简单的:
int start = path.lastIndexOf('/') + 1;
int end = path.lastIndexOf('_');
String album = path.substring(start, end);
You might want to throw in some error checking in case the formatting assumptions are violated.
您可能需要进行一些错误检查,以防违反格式假设。
回答by Ruchira Gayan Ranaweera
Try this
试试这个
public static void main(String args[]) {
String path = "/mnt/sdcard/Album/album3_137213136.jpg";
String[] subString=path.split("/");
for(String i:subString){
if(i.contains("album")){
System.out.println(i.split("_")[0]);
}
}
}
回答by fge
Using Paths
:
使用Paths
:
final String s = Paths.get("/mnt/sdcard/Album/album3_137213136.jpg")
.getFileName().toString();
s.subString(0, s.indexOf('_'));
If you don't have Java 7, you have to resort to File
:
如果您没有 Java 7,则必须求助于File
:
final String s = new File("/mnt/sdcard/Album/album3_137213136.jpg").getName();
s.subString(0, s.indexOf('_'));
回答by Roman C
Use regex to match the substring
使用正则表达式匹配子字符串
path.matches(".*album[0-9]+.*")
回答by PVR
Try this ..
试试这个 ..
String path = /mnt/sdcard/Album/album3_137213136.jpg
path = path.subString(path.lastIndexOf("/")+1,path.indexOf("_"));
System.out.println(path);
回答by Muhammad Abbas
How to count substring in String in java
如何在java中计算String中的子字符串
At line no 8 we have to used for loop another optional case replace for loop using just while loop like as while(true){. . .}
在第 8 行,我们必须使用 for 循环另一个可选的 case 替换 for 循环,使用 while 循环就像while(true){。. .}
public class SubString {
public static void main(String[] args) {
int count = 0 ;
String string = "hidaya: swap the Ga of Gates with the hidaya: of Bill to make Bites."
+ " The hidaya: of Bill will then be swapped hidaya: with the Ga of Gates to make Gall."
+ " The new hidaya: printed out would be Gall Bites";
for (int i = 0; i < string.length(); i++)
{
int found = string.indexOf("hidaya:", i);//System.out.println(found);
if (found == -1) break;
int start = found + 5;// start of actual name
int end = string.indexOf(":", start);// System.out.println(end);
String subString = string.substring(start, end); //System.out.println(subString);
if(subString != null)
count++;
i = end + 1; //advance i to start the next iteration
}
System.out.println("In given String hidaya Occurred "+count+" time ");
}
}