如何将宽空间转换为单个空间?Java字符串

如何将宽空间转换为单个空间?Java字符串,java,string,substring,Java,String,Substring,例如,我输入“我要去购物中心”,宽空间(\s)必须变成单个空间 String f = line.substring(0,1).toUpperCase() + line.substring(1).toLowerCase(); String[] split = f.split(" "); for(int i=0;i<split.length;i++){ System.out.print (split[i] + " "); } Strin

例如,我输入“我要去购物中心”,宽空间(\s)必须变成单个空间

    String f = line.substring(0,1).toUpperCase() + line.substring(1).toLowerCase();


    String[] split = f.split(" ");

    for(int i=0;i<split.length;i++){

        System.out.print (split[i] + " ");
    }
String f=line.substring(0,1).toUpperCase()+line.substring(1).toLowerCase();
String[]split=f.split(“”);

对于(int i=0;i创建一个
String-toTitleCase(String)
方法,对一个单词做正确的处理。它应该处理特殊情况,如将
转换为
,保持
小写,保持所有大写,如
FBI
完整,以及处理
O'Neal
等名称

您可以考虑寻找现有的实现。 然后按您所做的操作:拆分字符串、转换、连接回:

String结果=Arrays.stream(line.split(“”))
.map(this::toTitleCase)
.collect(收集器。连接(“”);

您可以同时使用字符串对象方法和regexp
例如:

您还可以使用
org.apache.commons:commons lang
库来大写字符串,只需:

StringUtils.capitalize(yourString);

谢谢你的回答,先生。我现在的问题是,如果我要输入大空格,句子必须改成单空格。我该怎么做?也许可以添加一个筛选器,以避免包含长度为0的修剪字符串。@AndrewS我尝试过。trim()到,但不起作用。在映射之前,将筛选器添加到流中,例如:
。)).filter(s->!s.trim().isEmpty()).map(…
你说的“宽空间(\t)必须变成单个空间”是什么意思?你能提供预期的结果吗?它与你已经得到的有什么不同?现在听起来你想用单个空间替换每个
\t
,可以通过
String replaced=yourString.replace来完成(“\t”,”;
。你说的“宽空格”是指制表符吗?@khelwood只是指宽空格。我的意思是“我要去购物中心”,那么你的问题为什么多次说
\t
?比如
String singleSpaceOnly=yourString.replaceAll(\\s+”);
?(添加
trim()
如果还要删除前导空格和尾随空格).Strings是不可变的。您可能在正确的轨道上,但请先运行您的代码,然后再发布它,以查看它是否实际工作。谢谢先生。上面显示的代码正在工作,但删除多余的空格是我无法做的事。我尝试了您的算法删除,但输出仍然相同。@Pshemo我知道字符串是不可变的!这只是一个提示!@2se4n您可以试试我编辑过的答案。@GhasemSadghi谢谢您的想法,先生!谢谢!
StringUtils.capitalize(yourString);