【问题标题】:Java - Convert a string of multiple characters to just a string of numbersJava - 将一个包含多个字符的字符串转换为一个数字字符串
【发布时间】:2018-03-05 19:32:24
【问题描述】:

我有一个如下所示的字符串坐标:“(1,2)-(5,7)”

如何将此字符串转换为数组:[1, 2, 5, 7]?

我还有其他两位数的字符串,例如:"(13,26)-(1,16)"

这需要变成 [13, 26, 1, 16]

任何帮助将不胜感激

【问题讨论】:

  • 您为实现这一目标做了哪些努力??

标签: java arrays string


【解决方案1】:

解决办法:

String s = "(1,2)-(45,87)";
String[] splitted = s.replaceFirst("\\D+", "").split("\\D+"); // Outputs: [1, 2, 45, 87]

解释:

\\D++ - 表示一个或多个非数字字符

s.replaceFirst("\\D+", "") - 这是为了避免在splitted 数组的第一个索引处存储空字符串(如果在输入字符串的第一个索引处存在“分隔”,则 String.split() 方法会处理字符串作为存储在结果数组中的第一个元素。使用该 replaceFirst() 方法,您可以消除输入字符串开头出现的所有非数字字符。

.split("\\D+") - 将上一个操作的结果拆分为一个或多个非数字字符。

注意:如果您只使用 String[] splitted = s.split("\\D+");(没有 replaceFirst() 部分,输出将如下所示:[, 1, 2, 45, 87],这不是您的意图。

【讨论】:

    【解决方案2】:

    //你的字符串

    String x = "(13,26)-(5,7)";
    

    //进入字符串数组

    String arr[] = x.replace("(", "").replace(")", "").replace("-", ",").split(",");
    

    如果你不想要字符串数组而你想要字符串那么:

    x.replace("(", "").replace(")", "").replace("-", ",");
    

    如果需要,您可以附加“[”和“]”。

    【讨论】:

      【解决方案3】:

      你可以试试这样的:

      String array = "(1,2)-(5,7)";
      
      String[] items = arr.replaceAll("\\(", "").replaceAll("\\)", "").replaceAll("-","").split(",");
      
      int[] newArray = new int[items.length];
      
      for (int i = 0; i < item.length; i++) {
          newArray[i] = Integer.parseInt(items[i]);
      }
      

      【讨论】:

        【解决方案4】:

        如果您一次只需要匹配 1 到 2 个数字,以下 sn-p 将为您解析出值:

        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.List;
        import java.util.regex.Matcher;
        import java.util.regex.Pattern;
        
        public final class IntegerGetter {
        
        public static void main(String[] args) {
            String test = "(13,26)-(1,16)"; // Line with the values
        
            Pattern p = Pattern.compile("[0-9]{1,2}");  // Create a regex pattern searching number values between 0 and 99
            Matcher m = p.matcher(test);
            List<Integer> values = new ArrayList<>();
            while(m.find()) {
                values.add(Integer.parseInt(m.group()));  // Convert the String matches to integers
            }
        
            System.out.println("Values are: " + Arrays.toString(values.toArray()));
        }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-17
          • 2010-11-22
          • 1970-01-01
          • 2020-01-29
          • 1970-01-01
          • 2014-12-16
          • 2012-12-06
          相关资源
          最近更新 更多