在分组操作的字符串数组中搜索特定字符串

时间:2017-11-15 06:16:33

标签: java

我有一个字符串

str = "Abc=1,gdf=1,ghj=1,pqr=1"

现在我将pqr = 1的值递增到pqr2,每当prq到来时它会将值递增1.所以我决定从每个""开始吐出这个字符串。所以spilited字符串数组的一部分将包含pqr = 1然后我可以执行我的递增操作。

代码如下

String []  parts=str.split("=");

这给出了在索引3处包含pqr的字符串部分,但是每次pqr都不在索引3时这是不必要的,所以我想让它成为通用的。为此,我试着做如下:

if(Arrays. asList(parts). contains("pqr") {
    // Do my other split operation 
} 

但是我无法通过这种方式使它成为通用的。我没有收到任何错误,但代码不会进入if语句。请建议怎么做。

2 个答案:

答案 0 :(得分:1)

首先,为此目的使用String并不可取。我认为你需要的是HashMap<String,Integer>而不是。

此外,您可以简单地遍历第一个数组并检查String substring的每个pqr

str = "Abc=1,gdf=1,ghj=1,pqr=1";
String[] arr = str.split(",");
for(String member: arr) {
    if(member.contains("pqr")) {
        //Do your operation here
    }
}

答案 1 :(得分:0)

这是你在找什么?我正在尽力使用提供的代码。

    public class Splitter {

    public static void main(String[] args) {

        String str = "Abc=1,gdf=1,ghj=1,pqr=1";

        String[] strSplit = str.split(",");

        int commaSplitCount = strSplit.length;

        for (int s = 0; s < commaSplitCount; s++) {

            String[] sSplit = strSplit[s].split("=");

            int equalsSplitCount = sSplit.length;

            if (equalsSplitCount > 0) {

                for (int sParts = 0; sParts < equalsSplitCount; sParts++) {
                    if (sParts == 0) {
                        if (sSplit[sParts].contains("pqr")) {

                            System.out.println("do something >> " + sSplit[sParts]);

                        } else {
                            System.out.println("do something else >> " + sSplit[sParts]);
                        }
                    }
                }
            }

        }

    }

}

如果您对每种方法做了不同的事情,可以使用开关。

输出结果为:

do something else >> Abc
do something else >> gdf
do something else >> ghj
do something >> pqr

无论你想对pqr做什么,你都可以在sout做些什么。