分割字符串以最后出现一个字符

时间:2020-09-01 14:12:43

标签: java string split

我正在尝试使用以下格式拆分字符串:

"abc=cde,dfe=lk,f,sss=f,d,s" 

我想通过使用第一组字符作为键,第二组字符作为值来在地图中恢复这些值。

例如

  • 键:abc,值:cde
  • 键:dfe,值:lk,f
  • 键:sss,值:f,d,s

因此将这些值拆分为最后出现的“,”。

有什么想法吗?

我尝试过使用regex和Stringtokenizer,但是我无法设法仅恢复最后一次出现的“,”

3 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式(可以进行优化):

,(?=(?:(?!,).)*=)

(请参见Regex101

这与,匹配,该,在下一个=之前没有后续的import pandas as pd import numpy as np from matplotlib import pyplot as plt from scipy.cluster.hierarchy import dendrogram, linkage, fcluster from sklearn import cluster, metrics data = pd.DataFrame({"fromage" : ["fromage1", "fromage2", "fromage3", "fromage4", "fromage5", "fromage6", "fromage7", "fromage8", "fromage9", "fromage10", "fromage11", "fromage12", "fromage13", "fromage14", "fromage15", "fromage16", "fromage17", "fromage18", "fromage19", "fromage20", "fromage21"], "calories" : np.random.uniform(low=100, high=450, size=(21,)), "sodium" : np.random.uniform(low=20, high=450, size=(21,)), "calcium" : np.random.uniform(low=70, high=250, size=(21,)), "lipides" : np.random.uniform(low=20, high=30, size=(21,)), "retinol" : np.random.uniform(low=50, high=120, size=(21,)), "folates" : np.random.uniform(low=1, high=30, size=(21,)), "proteines" : np.random.uniform(low=7, high=20, size=(21,)), "cholesterol" : np.random.uniform(low=100, high=450, size=(21,))}) #CConvertir l'index data = data.set_index("fromage") #Créer mes groupes kmeans = cluster.KMeans(n_clusters=4, init='k-means++', max_iter=300, n_init=10, random_state=0) kmeans.fit(data) #index triés des groupes idk = np.argsort(kmeans.labels_) #moyenne par variable m = data.mean() #TSS TSS = data.shape[0]*data.var(ddof=0) #data.frame conditionnellement aux groupes gb = data.groupby(kmeans.labels_) #effectifs conditionnels nk = gb.size() #MOYENNE DES FACTEURS PAR CLASSE mk = gb.mean() #pour chaque groupe écart à la moyenne par variable EMk = (mk-m)**2 #pondéré par les effectifs du groupe EM = EMk.multiply(nk,axis=0) #somme des valeurs => BSS BSS = np.sum(EM,axis=0) #variance expliquée par l'appartenance aux groupes pour chaque variable R2 = BSS/TSS

答案 1 :(得分:0)

您需要为此使用正则表达式。

完整代码

  @Field(type => ID!, { name: 'id' })
  @Column({ type: '_id', nullable: false, unique: true })
  public _id: string;

输出

public class Test {
    
    public static void main(String args[]) {
        
        String input = "abc=cde,dfe=lk,f,sss=f,d,s";
        String[] arrOfStr = input.split(",(?=(?:(?!,).)*=)");
        
        HashMap<String, String> properties = new HashMap<String, String>();
        
        for(int i=0;i<arrOfStr.length;i++) {
            String[] temp = arrOfStr[i].split("=");
            properties.put(temp[0], temp[1]);           
            
        }           
        System.out.println("Input String     : " +input);
        System.out.println("\nFinal properties : ");
    
        properties.entrySet().forEach(entry->{
        System.out.println("key = " +entry.getKey() + " :: value = " + entry.getValue());  
     });

    }    
}

答案 2 :(得分:0)

完整代码:

companion object CREATOR : Parcelable.Creator<SavedState> {
            override fun createFromParcel(parcel: Parcel): ResultBean {
                return ResultBean(parcel)
            }

            override fun newArray(size: Int): Array<ResultBean?> {
                return arrayOfNulls(size)
            }
        }

输出:

abc = cde

dfe = lk,f

sss = f,d,s