当前位置: 首页 > 知识库问答 >
问题:

Java:在字符串中给定的边界之间查找数字或字母

狄法
2023-03-14

我有一些字符串,比如1-311-16a-dC-G

有没有一种方法可以生成一个数组,其中包含了中间的所有值(包括)。例如,字符串a-d将返回一个数组['a'、'b'、'c'、'd'],而11-16将返回[11,12,13,14,15,16]?

共有2个答案

龙智
2023-03-14

这里有int和string两种方式。返回数组。

String[] range = "11-16".split("-");
int intArray[] =
        IntStream
                .rangeClosed(Integer.parseInt(range[0]),
                        Integer.parseInt(range[1]))
                .toArray();
    

range = "C-G".split("-");
String[] strArray =
        IntStream
        .rangeClosed(range[0].charAt(0), range[1].charAt(0)).
            mapToObj(Character::toString)
        .toArray(String[]::new);

System.out.println(Arrays.toString(intArray));          
System.out.println(Arrays.toString(strArray));  

印刷品

[11, 12, 13, 14, 15, 16]
[C, D, E, F, G]

如果您更喜欢字符数组而不是字符串,这就可以了。

Character[] charArray =
        IntStream
        .rangeClosed(range[0].charAt(0), range[1].charAt(0)).
            mapToObj(ch->Character.valueOf((char)ch))
        .toArray(Character[]::new);
 
        
上官鸿朗
2023-03-14

这应该是有效的:

        String[] myString = new String[]{"1-3","11-16", "a-d","C-G"};

        for (String string: myString){
            String[] split = string.split("-");
            try {
                for (int i = Integer.parseInt(split[0]); i <= Integer.parseInt(split[1]); i++) {
                    System.out.print(i + " ");
                }
            }
            catch (NumberFormatException e){
                for (char i = split[0].charAt(0); i <= split[1].charAt(0); i++) {
                    System.out.print(i + " ");
                }
            }
            System.out.println();
        }

在这里,我只是打印结果。如果要将结果放入数组,可以创建一个arrayList并将元素添加到我正在打印的列表中。

编辑:如果您想保存它们,请改为:

        String[] myString = new String[]{"1-3","11-16", "a-d","C-G"};

        ArrayList<ArrayList<Character>> charArray = new ArrayList<>();
        ArrayList<ArrayList<Integer>> intArray = new ArrayList<>();

        for (String string: myString){
            String[] split = string.split("-");
            try {
                ArrayList<Integer> currentArray= new ArrayList<>();
                for (int i = Integer.parseInt(split[0]); i <= Integer.parseInt(split[1]); i++) {
                    currentArray.add(i);
                }
                intArray.add(currentArray);
            }
            catch (NumberFormatException e){
                ArrayList<Character> currentArray= new ArrayList<>();
                for (char i = split[0].charAt(0); i <= split[1].charAt(0); i++) {
                    currentArray.add(i);
                }
                charArray.add(currentArray);
            }
        }

        System.out.println(charArray);
        System.out.println(intArray);
    }
 类似资料:
  • 我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串在java中是否包含“12,3,14”。 我的代码:

  • 问题内容: 如何找到两个子字符串之间的字符串? 我当前的方法是这样的: 但是,这似乎效率很低而且不合Python。什么是做这样的更好的方法? 忘了提:该字符串可能无法启动,并最终和。他们之前和之后的字符可能更多。 问题答案:

  • 因此,我试图提出一种算法,在字符串数组中查找带有特定字符/字母的单词。 有没有一个聪明的方法,也许通过排序列表,然后以某种方式搜索? 另外,这个算法的运行时间是多少?它会被认为是O(n)还是O(n*m)?其中n是字典中的单词数,m是数组中每个单词的长度。

  • 问题内容: 我有一个字符串,例如:“这是应该使用的URL http://www.google.com/MyDoc.pdf ” 我只需要提取从http开始并以pdf结尾的URL:http: //www.google.com/MyDoc.pdf 这使我的输出为“应使用的http://www.google.com/MyDoc.pdf” 需要帮助。 问题答案: 这种问题是针对正则表达式进行的: 正则表达式

  • 问题内容: 我正在尝试 使用循环从两个不同的用户输入中打印常用字母。(我需要使用for循环来完成它。)我遇到了两个问题:1.我的语句“ If char not in output …”没有提取唯一值。2.输出为我提供了单个字母列表,而不是单个字符串。我尝试分割输出,但是分割遇到类型错误。 问题答案: 您正在尝试执行“设置相交”。Python有 相同的方法。您可以将其用于您的用例,例如: 将返回字符

  • 问题内容: 我正在寻找一种在字符串中查找JSON数据的方法。像wordpress简码一样思考它。我认为最好的方法是使用正则表达式。我不想解析JSON,只需查找所有出现的事件。 正则表达式中是否有办法使括号的数量匹配?目前,当我嵌套对象时遇到了这个问题。 演示的快速示例: 结果,我想要两个JSON字符串。谢谢! 问题答案: 从给定的文本中提取JSON字符串 由于您正在寻找一种简单的解决方案,因此可以