簡體   English   中英

如何將字符串轉換為數組(int和字符串數組)?

[英]How to convert string to array (int and string array).?

我如何從這樣的字符串中獲取字符串和int值: "a:10,b:15,c:20,d:30"

String mixedString = "a:10,b:15,c:20,d:30";
String requiredArray1[] = [a,b,c,d];
int requiredArray2[] = [10,15,20,20];

您可以循環使用String並一一測試您的String:

第一

您需要將String拆分為:

String myString = "a:10,b:15,c:20,d:30";
//split the String to get only the Strings and int in your case you need to split with , and :

String mixedString[] = myString.split(":|\\,");

第二

測試字符串是否為整數,然后返回true並將其插入整數數組,否則將其插入字符串數組:

public static boolean test(String s){
    try{
        Integer i = Integer.parseInt(s);
        return true;
    }catch(Exception e){
        return false;
    }
}

您的程序應如下所示:

public static void main(String[] args) {
    String myString = "a:10,b:15,c:20,d:30";
    String mixedString[] = myString.split(":|\\,");
    String requiredArray1[] = new String[mixedString.length];
    int requiredArray2[] = new int[mixedString.length];
    int s = 0;
    int n = 0;
    for (int i = 0; i < mixedString.length; i++) {
        if (!test(mixedString[i])) {
            requiredArray1[s] = mixedString[i];
            s++;
        } else {
            requiredArray2[n] = Integer.parseInt(mixedString[i]);
            n++;
        }
    }
}

public static boolean test(String s) {
    try {
        Integer i = Integer.parseInt(s);
        return true;
    } catch (Exception e) {
        return false;
    }
}

如果您的混合字符串如您在帖子中所顯示的那樣,每個字母字符后總是一個冒號定界符(:),然后是數字值的字符串表示形式,那么您實際上不需要額外的方法來測試是否那里有一個數值。 您只是知道它的存在,就像您知道那里也有一個alpha值一樣……或者……也許您沒有,也許您也應該測試該alpha值。 您沒有在帖子中指定任何一種方式,混合字符串中可能存在哪些不同的可能性。 因此,我們可以假設:

每個字母部分都以冒號(:)分隔,然后是數值的字符串表示形式,到目前為止,該數值實際上似乎是Integer。 然后是逗號(,)定界符和另一個冒號分隔的字母/數字對。

String mixedString = "a:10,b:15,c:20,d:30";
System.out.println("Original String: \"" + mixedString + "\"\n");

String[] mStringArray= mixedString.split(",");
String[] alphaArray = new String[mStringArray.length];
int[] numericArray = new int[mStringArray.length];

for (int i = 0; i < mStringArray.length; i++) {
    String[] tmp = mStringArray[i].split(":");
    alphaArray[i] = tmp[0];
    numericArray[i] = Integer.parseInt(tmp[1]);
}

// Display contents of the two Arrays
System.out.println("Elements From Alpha Array");
for (int i = 0; i < alphaArray.length; i++) {
    System.out.println(alphaArray[i]);
}

System.out.println("\nElements From Numeric Array");
for (int i = 0; i < numericArray.length; i++) {
    System.out.println(numericArray[i]);
}
   public static void main(String[] args) {
    String myString = "a:10,b:15,c:20,d:30";
    // extract all numbers (All elements are numbers so you can convert it to int easily )
    String[] requiredArray1 = extractAllAccordingToRegex("\\d+", myString);
    // extract all characters        
    String[] requiredArray2 = extractAllAccordingToRegex("[a-zA-Z]+",myString);
    }

   static String[] extractAllAccordingToRegex(String inputRegex, String input) {
    List<String> extractedItems = new ArrayList<String>();
    Pattern reg = Pattern.compile(inputRegex);
    Matcher m = reg.matcher(input);
    while (m.find()) {
        extractedItems.add(m.group());
    }
    return extractedItems.toArray(new String[1]);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM