我有一个我想用Java格式化的String。这是我的代码:
import java.util.*;
public class Test{
public static void main(String[] args){
String a = "John College of NY NY 10286";
a = removeSpaces(a);
System.out.println(a);
}
public static String removeSpaces(String s) {
StringTokenizer st = new StringTokenizer(s," ",false);
String t = "";
while(st.hasMoreElements()){
t = t + ";" + st.nextElement();
}
return t;
}
<小时/>
;John;College;of;NY;NY;10286
<小时/>
;John;College of NY;NY 10286;
<小时/> 我不知道如何保持“大学”和“大学”之间的空白区域。 “of”和“NY”。或“NY”和“10286”之间的两个白色空格。我该如何格式化线?
答案 0 :(得分:1)
从您的问题中不清楚您的字段是如何划分的。如果它是“3个或更多空格”,(当我说“它应该保留1或2个空格”时我正在推断)那么你可以使用String.split
和正则表达式:
StringBuilder sb = new StringBuilder();
for (String s : "John College of NY NY 10286".split("\\s{3,}")) {
sb.append(';');
sb.append(s);
}
return sb.toString();
返回:
";John;College of NY;NY 10286"
答案 1 :(得分:0)
嗯,对于像这样的字符串,这并不是一个好方法,因为你必须有一个明确的规则来分隔子串。分隔符是一个空格,两个空格,任意数个......?
现在,如果你有这样的话,你可以更容易地做到这一点:
String a = "John 'College of NY' 'NY 10286'";
然后你可以用引号在字符串中保留空格。 这是你的作业要求吗?
如果有,请参阅此答案:Regex for splitting a string using space when not surrounded by single or double quotes
答案 2 :(得分:0)
我首先要分开正确部分的项目(长度)
try {
Pattern regex = Pattern.compile("(.{11})(.{19})(.{4})(.+)", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// matched text: regexMatcher.group()
// match start: regexMatcher.start()
// match end: regexMatcher.end()
}
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
}
之后我会修剪
周围的空白try {
String resultString = subjectString.replaceAll("(?i)\\A\\s*(.*?)\\s*\\Z", "$1");
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
} catch (IllegalArgumentException ex) {
// Syntax error in the replacement text (unescaped $ signs?)
} catch (IndexOutOfBoundsException ex) {
// Non-existent backreference used the replacement text
}
答案 3 :(得分:0)
public static String removeSpaces(String s) {
StringTokenizer st = new StringTokenizer(s," ",false);
String t = "";
int i=0; // counter variable
while(st.hasMoreElements()){
switch(i)
{
case 2:
case 3:
t = t + " ";
break;
case 5:
t = t + " ";
break;
default:
t = t + ";";
break;
}
t = t + st.nextElement();
++i;
}
t = t + ";"; // put the last semi-colon
return t;
}
考虑到你想在第二个和第三个单词之后放一个空白字符,在第五个单词之后放两个空白字符,你可以使用switch-case语句来达到你想要的效果。