Java – 解析String并每100个字符添加换行符

我想问一下如何解析一个String并每100个字符添加一个换行符( \n )。 我知道你可以用正则表达式解析字符串,但不知道如何继续。 有人可以帮忙吗?

你可以这样做:

 String str = "...."; String parsedStr = str.replaceAll("(.{100})", "$1\n"); 

这将用相同的100个字符替换每100个字符,并在末尾添加一个新行。

(.{100})将捕获一组100个字符。 第二个$1将放置该组的内容。 \n然后将附加到刚刚匹配的100个字符。

很简单:

 StringBuilder sb = new StringBuilder(); for (int i = 0; i < str.length(); i++) { if (i > 0 && (i % 100 == 0)) { sb.append("\n"); } sb.append(str.charAt(i)); } str = sb.toString(); 

或许可以尝试一下吗?

 String stringToParse = "abcde"; for(int i = 0; i < stringToParse.size(); i = i + 100){ stringToParse = ((StringBuffer) stringToParse ).insert(i, "\n").toString(); } 

我建议使用StringBuilder。 它非常高效,可以完全适合您的任务。

 String originalString = ... ; // The new length of the string is int newLength = originalString.length() +(int) Math.ceil ( originalString.length() / 100.0 ); StringBuilder builder = new StringBuilder ( newLength ); 

我将字符串的每个100个字符部分称为“块”,以便于查看正在发生的事情。

 int chunkStart = 0; while ( chunkStart < originalString.length() ) { // We find the index of the end of the chunk. int endOfThisChunk = Math.min ( chunkStart + 100, originalString.length() ); // and this chunk to builder builder.append ( originalString.substring( chunkStart, endOfThisChunk ) ); // append the new line character builder.append ( '\n' ); // set the next spot for chunkStart chunkStart = endOfThisChunk; } return builder.toString(); 

希望有所帮助! 如果您需要更多解释,请告诉我们!

我认为这比%100快一点并反复追加

 function(String input) { // array represantation of the String final char[] inputArray = input.toCharArray(); // same length + amount of newlines (ie length / 100) final char[] outputArray = new char[inputArray.length + (inputArray.length/100)]; int i = 0; int o = 0; while(i < inputArray.length) { // copy every 100th substring System.arraycopy(inputArray,i,outputArray,o,100); i += 100; o += 101; outputArray[o] = '\n'; } // copy rest if(i < inputArray.length) { System.arraycopy(inputArray,i,outputArray,o,inputArray.length-i); } return(outputArray.toString()); } 

虽然未经测试

无需通过正则表达式解析String,您可以将其拆分。

 String s = "your very long String"; String[] splited = new String[s.size() / 100 + 1]; for (int i = 0; i < splited.length(); i++) { splited[i] = s.subString(0, 100); s = s.subString(100); } 

编辑

 StringBuilder sb = new StringBuilder(); for(int i = 0; i< splited.size(); i++) { sb.append(splited[i]); sb.append("\n"); } String stringWithNewLines = sb.toString(); 

因为你不能只用Java中的常规字符串添加更多的字符串 。 您应该使用StringBuffer来执行此操作。

您可以使用for循环遍历String,然后在每100个字符后循环:

 String string = "Some long string ..."; StringBuffer buffer = new StringBuffer(); for(int i = 0; i < string.length(); i++) { // Append a \n after every 100th character. if((i > 0) && (i % 100) == 0) { buffer.append("\n"); } // Just adds the next character to the StringBuffer. buffer.append(string.charAt(i)); } String parsedString = buffer.toString();