我在多维数组中有很长的字符串。我一直试图找出一种方法,用"\n"
替换每个字符串中的每个第6个空格,这将导致它基本上按下回车。
例:
orginalString =“我想在第六个空格之后输入”;
FormatedString =“我想在 \ n 之后输入”第六个空格“
这是我到目前为止所得到的。我可能完全错了。
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);
}
}
}
}
答案 0 :(得分:3)
这是一个单行解决方案:
str = str.replaceAll("(\\S+\\s+){6}", "$0\n");
替换术语$0
是整个匹配项,因此会将匹配的内容加上换行符。
如果正则表达式不太符合您的喜好,请更改它。例如,如果您想用换行符替换第6个空格,请从捕获中排除尾随空格:
str = str.replaceAll("((\\S+\\s+){5}\\S+)\\s+", "$1\n");
答案 1 :(得分:1)
我会这样做
// 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
答案 2 :(得分:0)
你是对的。我建议如下:
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(无论如何),你将获得返回的字符串。
答案 3 :(得分:0)
您可以使用以下正则表达式:
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.