[英]How do i add a “\n” every 6 spaces in a string?
我在多维数组中有很长的字符串。 我一直试图找出一种方法,用"\\n"
替换每个字符串中的每个第6个空格,这将导致它基本上按回车键。
例:
orginalString =“我要在此的第六个空格之后放置回车”;
FormatedString =“我要在\\ n的第六个空格之后输入enter”
这就是我到目前为止所得到的。 可能完全错误。
public static void FormatArray(String c) {
int counter = 0;
for (int i = 0; i < c.length(); i++) {
if (c.charAt(i) == ' ') {
counter++;
}
if (counter == 6) {
counter = 0;
for (int j = 0; j < Variables.getCards().length; j++) {
StringBuilder string = new StringBuilder(
Variables.getCards()[j][1]);
string.setCharAt(i, '\n');
System.out.println(string);
}
}
}
}
这是一种解决方案:
str = str.replaceAll("(\\S+\\s+){6}", "$0\n");
替换项$0
是整个匹配项,因此会返回匹配项和换行符。
如果正则表达式不符合您的喜好,请更改它。 例如,如果要用换行符替换第6个空格,请从捕获中排除尾随空格:
str = str.replaceAll("((\\S+\\s+){5}\\S+)\\s+", "$1\n");
我会这样做
// given a String str, replace every sixth space with " \n "
public static String formatString(String str) {
if (str == null) { // Handle null.
return null;
}
StringBuilder sb = new StringBuilder(); // An output buffer.
int count = 0;
for (char ch : str.toCharArray()) { // loop over the characters.
if (ch == ' ') { // test for space.
count++;
}
if (count == 6) { // every sixth space.
count = 0;
sb.append(" \n");
}
sb.append(ch);
}
return sb.toString(); // return the string.
}
// Test it.
public static void main(String[] args) {
String originalString = "i want to put enter after the sixth space of this";
String formattedString = "i want to put enter after \n the sixth space of this";
if (formatString(originalString).equals(
formattedString)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
当我运行上面的代码时,我得到的输出-
Yes
你说得很对。 我建议以下内容:
public static String formatStr(String a){
if(a==null) return null;
String newStr="";
int len=a.length();
int counter=0;
for(int i=0;i<len;i++){
newStr+=a.charAt(i);
if (a.charAt(i) == ' ')counter++;
if (counter == 6){
counter=0;
newStr+="\n";
//System.out.println(string);
}
}
return newStr;
}
然后,您可以调用formatStr(whatever),您将获得返回的字符串。
您可以使用以下正则表达式:
String pattern = "(\\S*\\s){6}";
String testString = "This is just a regular test. This is just a regular test. This is just a regular test.";
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(testString);
StringBuilder strBuilder = new StringBuilder();
while (matcher.find()) {
strBuilder.append(matcher.group());
strBuilder.replace(strBuilder.length() - 1, strBuilder.length(), "\n"); // To make it platform independent, user System.lineSeparator() instead of "\n" - only works in Java 7
}
if (matcher.hitEnd()) {
strBuilder.append(testString.substring(strBuilder.length()));
}
String newString = strBuilder.toString();
System.out.println(newString);
输出将是:
This is just a regular test.
This is just a regular test.
This is just a regular test.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.