【问题标题】:How to split a string into several strings of equal sizes如何将一个字符串拆分成几个大小相等的字符串
【发布时间】:2021-01-01 16:02:23
【问题描述】:

我必须将二进制数转换为十六进制数。我决定这样做的方法是将二进制字符串分成几个长度为 4 的字符串,并以十六进制数为每个字符串分配其对应的值(即 1000 = 8、1101 = D)。

我已经看到几个问题询问如何将字符串拆分为大小为 4 的字符串,但所有这些解决方案都使用了一个给出单个字符串的正则表达式。例如我在一个解决方案中找到了这行代码:

System.out.println(Arrays.toString("String".split("(?

当我尝试将它与二进制数“10011000”一起使用时,我得到了“[1001, 1000]”,但是作为单个字符串(括号、逗号和空格作为字符包含在内),我得到了同样的问题,如何拆分字符串。

有没有办法将一个字符串拆分成一个较小的字符串数组?

【问题讨论】:

  • 你得到一个字符串的原因是因为调用了Arrays.toString。如果你把它排除在外,你会得到一个数组。

标签: java arrays regex string split


【解决方案1】:

您可以尝试将字符串变成一个 char 数组,然后变成另一个字符串数组,将 char 数组的每 4 个字符相加。

试试这个:

    String BinaryNumber = "10011010";
    
    char[] n = new char[BinaryNumber.length()];
    
    for(int i=0; i<BinaryNumber.length(); i++){
        n[i] = BinaryNumber.charAt(i);
    }
    
    String str;
    String[] NumberArray = new String[(BinaryNumber.length())/4];
    int count = 0;
    
    for(int i=0; i<BinaryNumber.length(); i+=4){
        
        str = String.valueOf(n[i])+String.valueOf(n[i+1])+String.valueOf(n[i+2])+String.valueOf(n[i+3]);
        NumberArray[count] = str;
        count++;
        
    }

我认为这可能是解决方案,尽管它仅在 BinaryNumber 的长度可被 4 整除时才有效。

【讨论】:

  • 使用 Java 的内置功能要简单得多,但同样限制为 4 的倍数:char[] binnum = "10011010".toCharArray(); String[] strary = new String[binnum.length/4]; for(int i = 0; i &lt; strary.length; i++ ) strary[i] = new String(binnum,i*4,4);
【解决方案2】:

这样试试吧。

String binaryNumber = "110101111";
// first make certain the binary string is a multiple of length four so
// pad on the left with 0 bits.

binaryNumber = "0".repeat(3 - (binaryNumber.length()+3) % 4)
        + binaryNumber;

// Then you can just split it like this as you described.
String[] groups = binaryNumber.split("(?<=\\G.{4})");

for (String v : groups) {
    System.out.println(v);
}

打印

0001
1010
1111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多