[java]删除非载波空间
我有一个带有多个空格的字符串,这是不必要的,我想删除该空格,并需要一个结构良好的输出。我需要在单词之间留一个空格。 输入:数字后,第一个单词前有空格。。5新行,带@line有多个空格[java]删除非载波空间,java,parsing,html-parsing,Java,Parsing,Html Parsing,我有一个带有多个空格的字符串,这是不必要的,我想删除该空格,并需要一个结构良好的输出。我需要在单词之间留一个空格。 输入:数字后,第一个单词前有空格。。5新行,带@line有多个空格 1 An item one area city, country type of area time of event 1 2 An item one area city, coun
1
An item one
area city, country
type of area
time of event 1
2
An item one
area city, country
type of area
time of event 1
3 ... idem
`
我想要的是这样的结构:
一项;地区、城市、国家;区域类型;事件1发生的时间代码>
第二项;地区、城市、国家;区域类型;事件2发生的时间;
.
.
.
我试着用
st.replaceAll(“\n”和“)
但这并不是我所期望的。。
我需要帮助
更新部分解决,并且已经存在另一个问题
问题1
s = s.replaceAll("\\n+", " ");
s = s.trim();
s = s.replaceAll(" \\s+", ";");
输出:
An item one;area city, country;type of area;time of event 1
1一项;地区、城市、国家;区域类型;事件1的时间
二第一项;地区城市、乡村;区域类型;事件1的时间
现在第二个问题已经存在了,比如一个单词中有超过1个空格
area-city
,结果为area;城市
,因此请帮助我完成此…将此用于您所需的输出:
public static void main(String[] args) {
String s= "abc def agig";
s=s.trim(); // thanks to Christian for the suggestion.
s= s.replaceAll("\\s+", " ");
System.out.println(s);
O/P : abc def agig
输入:
An item one
area city, country
type of area
time of event 1
使用方法如下:
st=st.replaceAll(“\\r?\\n+”,“;”)代码>
输出:
An item one;area city, country;type of area;time of event 1
目标是从多行变成分号分隔的文本,并删除额外的空格
也许您需要使用多行代码。首先去掉额外的新行,然后是额外的空格,然后放入分号并连接行
因此,首先将所有双新线替换为单新线:
st = st.replace("\r", "\n"); // just in case you have windows new line
st = st.replace("\n\n", ); // optional, else string tokeizer will by default iggnore consecutive seperators
现在,一个字符串标记器在新行上断开
logger.info("Initial :[[[" + st + "]]]");
StringTokenizer st1 = new StringTokenizer (st, "\n");
StringBuilder sb = new StringBuilder (); //the final string, will be built here
boolean first = true;
while(st1.hasMoreTokens(){
s = st1.nextToken();
s = s.trim();
s = s.replace(" ", " ");//two spaces with one
if(frist){
first = false;
}else{
sb.append(";");
}
sb.append(s);
}
logger.info("Final :[[[" + sb + "]]]");
注
这不是编译后的代码,只是为了清晰起见在这里编写
如果不使用日志记录,则应使用System.out.println
比如说
System.out.println("abcd ipsum dolor \n sit.".replaceAll("\\s+", " "));
输出
abcd ipsum dolor sit.
建议使用delimiterFAIL,您的结果与原始问题不符。请参阅我的答案以了解正确的方式。如果单词之间有多个空格,该怎么办?修剪不会去掉那个。修剪只删除左右两端是的,我仍然失败,我只是纠正我的帖子。。。。很抱歉我刚刚删除[已解决],但问题仍然存在请澄清,是否要删除^number\r\n?我肯定会说,空格不是在结尾或开头。如果反对者愿意留下评论,我可以了解更多内容:)@克里斯蒂安-哦。。“应该是”。我的错。将一次或多次发生的“”替换为“”。没有看到我键入了“”。也使用trim()
,因为OP字符串后面有空格。是否使用s=s.replaceAll(“\\s+”,”)代码>不替换尾随空格?结果是1;第一项;地区、城市、国家;区域类型;事件1发生的时间
@user3145749您的输入字符串是什么?@user3145749您是否在used regex中使用了+作为\\r?\\n+
?@enhaka您能给我准确的输入您正在使用什么吗?准确的输入显示在我的ask post上。。输入:数字后,第一个单词前有空格。。5新行,带@line有多个空格