【问题标题】:How to convert string to array (int and string array).?如何将字符串转换为数组(int和字符串数组)。?
【发布时间】:2017-01-07 07:25:52
【问题描述】:

如何从这样的字符串中获取字符串和 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];

【问题讨论】:

    标签: java arrays string integer


    【解决方案1】:

    您可以循环您的字符串并一一测试您的字符串:

    第一

    您需要将您的字符串拆分为:

    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(":|\\,");
    

    第二

    测试如果String是Integer则返回true并将其插入Integers数组,否则将其插入Strings数组:

    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;
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您的混合字符串如您在帖子中显示的那样,其中每个字母字符 总是 后跟冒号分隔符 (:),然后是数字值的字符串表示形式,那么您真的不需要需要一种额外的方法来测试是否存在数值。你只知道它在那里,就像你知道那里也有一个 alpha 值......或者......也许你不知道,也许你也应该测试 alpha。您没有在帖子中指定任何一种方式,混合字符串中可能存在哪些不同的可能性。因此,我们可以假设:

      每个 alpha 部分都用冒号 (:) 分隔,然后是数字值的字符串表示形式,到目前为止,该数字值确实看起来是整数。然后是逗号 (,) 分隔符和另一个以冒号分隔的字母/数字对。

      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]);
      }
      

      【讨论】:

        【解决方案3】:
           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]);
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-26
          • 1970-01-01
          • 2021-12-21
          • 2016-08-14
          • 1970-01-01
          • 2021-12-13
          • 1970-01-01
          • 2016-01-27
          相关资源
          最近更新 更多