简体   繁体   English

正则表达式模式将逗号分隔的字符串转换为点分隔的一个

[英]Regex pattern to convert comma separated string to dot separated one

I want to convert an long array values to a specific format of string. 我想将长数组值转换为特定的字符串格式。

for eg longArray = {0,1,2,3} to be converted as string 0.1.2.3 例如将longArray = {0,1,2,3}转换为字符串0.1.2.3

I can do Arrays.toString(longArray) which will return [0, 1, 2, 3]. 我可以做Arrays.toString(longArray),它将返回[0,1,2,3]。

Now this string [0,1,2,3] has to be converted into 0.1.2.3 现在,此字符串[0,1,2,3]必须转换为0.1.2.3

I have used this code which works but would like to see if this code can be improved 我已经使用了可以正常工作的代码,但是想看看是否可以改进此代码

String convertedString = Arrays.toString(longArray).replaceAll(",",".").replaceAll("[\\[,\\],\\s]", "");

I have to mention that i am on Java 7 so can't use any Java 8 features like streams Best Regards, 我不得不提到我使用的是Java 7,因此无法使用Java 8的任何功能,例如流媒体致谢,

Saurav Saurav

    long[] longArray = {0,1,2,3};
    String s = LongStream.of(longArray)
            .mapToObj(Long::toString)
            .collect(Collectors.joining("."));

Array of longs to stream of longs, every long mapped to a String with Long.toString(long) and then joined with a delimiter . 从long到long的流的数组,每个long都使用Long.toString(long)映射到String,然后使用定界符连接. .

Originally I has String::valueOf instead of Long.toString . 本来我有String::valueOf而不是Long.toString Thanks to @Andreas for a slightly better style. 感谢@Andreas提供更好的样式。

Not much shorter, but I think the regular expressions make it look more elegant: 不会短很多,但是我认为正则表达式使它看起来更优雅:

String convertedString = Arrays.toString(longArray)
.replaceAll("^.|.$", "");
.replaceAll("[^0-9]+",".")
  1. Remove first and last character. 删除第一个和最后一个字符。
  2. Replace all non-numeric strings with dots. 用点替换所有非数字字符串

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM