我正在为Android编写一个二进制/十进制/十六进制转换器,并尝试用正则表达式格式化Java中的字符串,它将从右到左每四个字符添加一个空格。
这段代码从左到右运行,但我想知道是否有方法可以反转它。
stringNum = stringNum.replaceAll("....", "$0 ");发布于 2013-02-14 09:04:38
也许不使用正则表达式,而使用StringBuilder,如下所示
String data = "abcdefghij";
StringBuilder sb = new StringBuilder(data);
for (int i = sb.length() - 4; i > 0; i -= 4)
sb.insert(i, ' ');
data = sb.toString();
System.out.println(data);输出:
ab cdef ghij发布于 2013-02-14 09:01:58
在C#中,您可以执行类似于Regex.Replace("1234567890", ".{4}", " $0", RegexOptions.RightToLeft)的操作。
不幸的是,在 Java .中
正如Explossion Pills在注释中建议的那样,您可以颠倒字符串,应用正则表达式,然后再次颠倒它。
另一种解决方案是从字符串中提取最后一个N数字,其中N可以被4整除。然后,您可以成功地应用替换,并在开头连接字符串的其余部分。
发布于 2013-02-14 09:11:35
String str = "0123456789ABCDE";
// Use a StringBuffer to reverse the string
StringBuffer sb = new StringBuffer(str).reverse();
// This regex causes " " to occur before each instance of four characters
str = sb.toString().replaceAll("....", "$0 ");
// Reverse it again
str = (new StringBuffer(str)).reverse().toString();
System.out.println(str);https://stackoverflow.com/questions/14866054
复制相似问题