【问题标题】:Java string split without spaceJava字符串不带空格分割
【发布时间】:2011-05-10 02:59:33
【问题描述】:

我正在尝试拆分一些用户输入。输入的形式为 a1 b2 c3 d4。 对于每个输入(例如 a1),我如何将其拆分为“a”和“1”?

我对字符串拆分功能很熟悉,但是我应该指定什么作为分隔符,或者这甚至可能吗?

谢谢。

【问题讨论】:

    标签: java string split


    【解决方案1】:

    你可以使用String#substring()

    String a1 = "a1"
    String firstLetterStr = a1.substring(0,1);
    String secondLetterStr = a1.substirng(1,a1.length());
    

    同样,

    String c31 = "c31"
    String firstLetterStr = c31.substring(0,1);
    String secondLetterStr = c31.substirng(1,c31.length());
    

    【讨论】:

    • 如果他选择 'aa31' 或类似的东西将不起作用。不知道这是否可能,但是,只是想我会指出来。
    • @JasCav:当然不会。但是让OP来说这样的话。我已经犯了一个错误,即根据类似的评论编辑原始问题——而不是来自 OP。
    • @Adeel - 好点。有时,根据开发人员的需求选择简单的答案实际上会更好。有时我必须小心不要过度设计解决方案。
    【解决方案2】:

    如果您想一般地拆分字符串(而不是尝试根据其他答案计算字符数),您仍然可以使用 String.split(),但您必须使用 regular expressions。 (注意:当您有 a1、a2、aaa333 等字符串时,此答案将有效。)

    String ALPHA = "\p{Alpha}";
    String NUMERIC = "\d";
    
    String test1 = "a1";
    String test2 = "aa22";
    
    ArrayList<String> alpha = new ArrayList();
    ArrayList<String> numeric = new ArrayList();
    
    alpha.add(test1.split(ALPHA));
    numeric.add(test1.split(NUMERIC));
    alpha.add(test2.split(ALPHA));
    numeric.add(test2.split(NUMERIC));
    

    此时,alpha 数组将包含字符串的 alpha 部分,而数字数组将包含数字部分。 (注意:我实际上并没有编译它来测试它是否可以工作,但它应该给你基本的想法。)

    【讨论】:

    • "\p{Alpha}" 给我一个错误提示“无效的转义序列”。
    • @Triple777er - 现在尝试“[a-zA-Z]”而不是“\p{Alpha}”。
    • 非常感谢 Jas,我现在对如何做有了基本的了解。
    • @Triple77er - 没问题。如果这对您有所帮助,我将不胜感激。 :-) 谢谢!
    【解决方案3】:

    这真的取决于你之后将如何使用数据,但除了split("") 或通过索引访问单个字符之外,另一种拆分为单个字符的方法是toCharArray()——它只是将字符串分解为字符数组...

    【讨论】:

      【解决方案4】:

      是的,有可能,你可以使用split("");

      【讨论】:

        【解决方案5】:

        使用split(" ") 将用户输入拆分为单个标记后,您可以使用split("") 将每个标记拆分为字符(使用空字符串作为分隔符)。

        【讨论】:

          【解决方案6】:

          将空格分割成一个字符串数组,然后用String.charAt(0)String.charAt(1) 拉出单个字符

          【讨论】:

            【解决方案7】:

            我建议只迭代三个字符。

            for(int i = 0; i < str.length(); i += 3) {
                 char theLetter = str.charAt(i);
                 char theNumber = str.charAt(i + 1);
                 // Do something
            }
            

            编辑:如果可以多于一个字母或数字,请使用正则表达式:

            ([a-z]+)(\d+)
            

            信息:http://www.regular-expressions.info/java.html

            【讨论】:

            • 我认为它是 1 个字母/1 个数字的组合。它可能是,仍然。
            • 谢谢。仅适用于 1 个字母 1 个数字的组合。
            猜你喜欢
            • 2013-10-11
            • 2012-09-22
            • 1970-01-01
            • 2012-01-02
            • 1970-01-01
            • 2014-12-13
            • 2013-08-02
            • 2023-04-02
            • 1970-01-01
            相关资源
            最近更新 更多