Java 从字符串数组中查找特定值

Java 从字符串数组中查找特定值,java,android,arrays,Java,Android,Arrays,我是Java/Android开发新手。我需要从字符串数组中获取特定值 String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"}; 这个阵列每次都不同。我需要获取包含.jpg、.png、.tga的所有值,并用它们形成一个新数组 System.out.println(Arrays.toString(PictureResult)); //It prints "a.jpg, b.png, e.tga" UPD:感谢大家的快速

我是Java/Android开发新手。我需要从字符串数组中获取特定值

String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"};
这个阵列每次都不同。我需要获取包含.jpg、.png、.tga的所有值,并用它们形成一个新数组

System.out.println(Arrays.toString(PictureResult));
//It prints "a.jpg, b.png, e.tga"

UPD:感谢大家的快速而有用的回复

通过一种简单的方式,您可以迭代原始数组并搜索您的模式:

List<String> pictureResult = new ArrayList<String>();
for(String picture : PictureTest) {
    //use something like contains or a regex, for example
    if (picture.contains(".jpg"))
        pictureResult.add(picture);
    //etc...
}
List pictureResult=new ArrayList();
用于(字符串图片:PictureTest){
//例如,使用contains或regex之类的内容
if(picture.contains(“.jpg”))
图片结果添加(图片);
//等等。。。
}

您可以通过一种简单的方式获得想法…

您可以迭代原始数组并搜索您的模式:

List<String> pictureResult = new ArrayList<String>();
for(String picture : PictureTest) {
    //use something like contains or a regex, for example
    if (picture.contains(".jpg"))
        pictureResult.add(picture);
    //etc...
}
List pictureResult=new ArrayList();
用于(字符串图片:PictureTest){
//例如,使用contains或regex之类的内容
if(picture.contains(“.jpg”))
图片结果添加(图片);
//等等。。。
}

你明白了…

使用for循环在
PictureTest[]
中迭代元素,并检查每个
元素是否包含()
扩展。使用
ArrayList
List
存储值,因为无法修改数组的大小

String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"};
ArrayList<String> PictureResult = new ArrayList<String>;

for(String item : PictureTest) {
    if(item.contains(".jpg") || item.contains(".png") || item.contains(".tga") {
        PictureResult.add(item);
    }
}
stringpicturetest[]={“a.jpg”、“b.png”、“c.txt”、“d.wav”、“e.tga”};
ArrayList PictureResult=新的ArrayList;
用于(字符串项:PictureTest){
如果(item.contains(“.jpg”)| | item.contains(“.png”)| | item.contains(“.tga”){
图片结果添加(项目);
}
}

编辑:如果您只需要在末尾检查文件扩展名,可以使用
endsWith()
而不是
contains()

使用for循环在
PictureTest[]
中迭代元素,并检查它们是否都包含()扩展。使用
ArrayList
List
存储值,因为无法修改数组的大小

String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"};
ArrayList<String> PictureResult = new ArrayList<String>;

for(String item : PictureTest) {
    if(item.contains(".jpg") || item.contains(".png") || item.contains(".tga") {
        PictureResult.add(item);
    }
}
stringpicturetest[]={“a.jpg”、“b.png”、“c.txt”、“d.wav”、“e.tga”};
ArrayList PictureResult=新的ArrayList;
用于(字符串项:PictureTest){
如果(item.contains(“.jpg”)| | item.contains(“.png”)| | item.contains(“.tga”){
图片结果添加(项目);
}
}

编辑:如果您只需要在末尾检查文件扩展名,您可以使用
endsWith()
而不是
contains()

如果您使用的是Java 8,您可以使用谓词来筛选列表。类似于以下内容:

public class PredicateTester {

    public static void main(String args[]) {
        String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"};
        List<String> filteredList = filterStrings(PictureTest, filter());
        filteredList.forEach(System.out::println);
    }

    public static Predicate<String> filter() {
        return p -> p.endsWith(".jpg") || p.endsWith(".png") || p.endsWith(".tga");
    }

    public static List<String> filterStrings (String[] fileNames, Predicate<String> predicate) {
        return Arrays.asList(fileNames).stream().filter( predicate ).collect(Collectors.<String>toList());
    }
}
公共类谓词测试程序{
公共静态void main(字符串参数[]){
字符串PictureTest[]={“a.jpg”、“b.png”、“c.txt”、“d.wav”、“e.tga”};
List filteredList=FilterString(PictureTest,filter());
filteredList.forEach(System.out::println);
}
公共静态谓词筛选器(){
返回p->p.endsWith(“.jpg”)| p.endsWith(.png”)| p.endsWith(.tga”);
}
公共静态列表筛选器字符串(字符串[]文件名,谓词){
返回Arrays.asList(文件名).stream().filter(谓词).collect(Collectors.toList());
}
}

如果您使用的是Java 8,则可以使用谓词来筛选列表。类似如下:

public class PredicateTester {

    public static void main(String args[]) {
        String PictureTest[] = {"a.jpg","b.png","c.txt", "d.wav", "e.tga"};
        List<String> filteredList = filterStrings(PictureTest, filter());
        filteredList.forEach(System.out::println);
    }

    public static Predicate<String> filter() {
        return p -> p.endsWith(".jpg") || p.endsWith(".png") || p.endsWith(".tga");
    }

    public static List<String> filterStrings (String[] fileNames, Predicate<String> predicate) {
        return Arrays.asList(fileNames).stream().filter( predicate ).collect(Collectors.<String>toList());
    }
}
公共类谓词测试程序{
公共静态void main(字符串参数[]){
字符串PictureTest[]={“a.jpg”、“b.png”、“c.txt”、“d.wav”、“e.tga”};
List filteredList=FilterString(PictureTest,filter());
filteredList.forEach(System.out::println);
}
公共静态谓词筛选器(){
返回p->p.endsWith(“.jpg”)| p.endsWith(.png”)| p.endsWith(.tga”);
}
公共静态列表筛选器字符串(字符串[]文件名,谓词){
返回Arrays.asList(文件名).stream().filter(谓词).collect(Collectors.toList());
}
}

使用正则表达式。使用正则表达式。使用item.endsWith()会更好吗?@EricGuan谢谢你的建议!根据OP的要求,
endsWith()
可能是一个更好的选择。我会将此添加到答案中…使用item.endsWith()会更好吗?@EricGuan谢谢你的建议!根据OP的要求,
endsWith()
可能是更好的选择。我会在答案中添加这一点。。。