我有一个公司的字符串描述,它是由不同的用户编写的(手工打印)。下面是一个例子(重点放在点、空格、首字母等):
XXXX是一家全球性的管理咨询、技术服务和外包公司,在120多个国家和地区有257000人为客户服务。XXXX公司结合无与伦比的经验、所有行业和业务部门的综合能力,以及对世界上最成功的公司的广泛研究,与客户合作,帮助他们成为高绩效的企业和政府。截至2012年7月31日的财政年度,公司净收入279亿美元。
现在,我想要的是将字符串格式化为更好的版本,如下所示:
XXXX是一家全球性的管理咨询、技术服务和外包公司,拥有257,000人,服务于120多个国家的客户。XXXX公司结合了无与伦比的经验、所有行业和业务部门的综合能力,以及对世界上最成功的公司的广泛研究,与客户合作,帮助他们成为高绩效的企业和政府。在截至2012年8月31日的会计年度,该公司实现了279亿美元的净收入。
我的问题是:是否有任何已定义方法的库可以进行所有拼写更正、不必要的空格删除等。?
到目前为止,如果是“/ ",我会将”、“替换为”,“和toUpperCase()。在前面等。
desc = desc.replace(" ", " ");
desc = desc.replace("..", ".");
desc = desc.replace(" .", ".");
desc = desc.replace(" ,", ", ");
desc = desc.replace(".,", ".");
desc = desc.replace(",.", ".");
desc = desc.replace(", .", ".");
desc = desc.replace("*", "");我相信有一个更干净和更好的版本来做这件事。也许用正则表达式??
如有任何解决办法,将不胜感激。
发布于 2012-11-28 12:37:03
如果我想解决你的问题,我可能会一次读1 char的文本,并在你走的时候格式化它。例如,在psuedocode中..。
while (has more chars){
char letter = readChar();
if (letter == ','){
// checking for the ',.' combination
letter = readChar();
if (readChar == '.'){
// write out a '.' only
out.print('.');
}
else {
// it wasn't the ',.' combination, so you need to output both characters, whatever they are
out.print(',');
out.print(letter);
}
}
else if (another letter you want to filter){
// etc.
}
else {
// doesn't match any of the filters, so just output the letter
out.print(letter);
}
}基本上,如果您一次读取文本1 char,您可以检测到所选格式问题中的任何一个,并立即纠正它们。这提供了性能改进,因为您只读取文本字符串一次(而不是8次,就像您目前正在做的那样),并且允许您添加任意多个不同/复杂的格式更改。但是,缺点是,您需要自己编写逻辑,而不是依赖内置的函数。
https://stackoverflow.com/questions/13605180
复制相似问题