Java 如何格式化字符串以包含所需的空白?
我想用Java格式化一个字符串。这是我的密码:Java 如何格式化字符串以包含所需的空白?,java,Java,我想用Java格式化一个字符串。这是我的密码: 当我运行代码时,我得到了以下信息:(不要介意前面的分号) 输出文本应以分号分隔为三部分,如下所示,并应保留最后两部分中的1或2个空格: 我不知道如何保持“学院”和“的”以及“的”和“纽约”之间的空白。或者“NY”和“10286”之间的两个空格。如何设置行的格式 对于这样的字符串,没有一个好方法,因为必须有一个明确的规则来分隔子字符串。分隔符是一个空格,两个空格,任意数目 现在,如果你有这样的东西,你可以更容易地做到: Strin
当我运行代码时,我得到了以下信息:(不要介意前面的分号)
输出文本应以分号分隔为三部分,如下所示,并应保留最后两部分中的1或2个空格:
我不知道如何保持“学院”和“的”以及“的”和“纽约”之间的空白。或者“NY”和“10286”之间的两个空格。如何设置行的格式 对于这样的字符串,没有一个好方法,因为必须有一个明确的规则来分隔子字符串。分隔符是一个空格,两个空格,任意数目 现在,如果你有这样的东西,你可以更容易地做到:
String a = "John 'College of NY' 'NY 10286'";
然后可以在带引号的字符串中保留空格。
这符合你的家庭作业要求吗
如果是这样的话,请参见以下答案:我会首先将项目分为正确的部分(长度) 在那之后,我会删掉周围的空白
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个或更多空格”(我是从你说“应该保留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"
考虑到您想在第二个和第三个单词后放一个空白字符,在第五个单词后放两个空白字符,您可以使用switch case语句来实现您想要的 你怎么知道哪些空格分隔元素,哪些空格不分隔元素?我认为这项任务没有很好的定义:)正如你所看到的,我更像是一个regexfreak,而不是一个java程序员(我想这些捕获并不都是必需的)String a=“纽约约翰学院10286”;System.out.println(a.replaceAll(“\\s{3,}”和“;”);
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
}
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"
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;
}