Daniel Ray
Posts: 53
Nickname: budoray
Registered: Oct, 2002
|
|
Re: Some hints would be awesooome
|
Posted: May 21, 2004 2:18 AM
|
|
Okay, here's how I did it at 4am my time. I'm posting this code because one, it is brute force and two, it has a bug at the end that you should be able to solve. I didn't double check my testcases either, so you may find other bugs. The point is, my testcases showed me why the extra comma is appearing at the end. You could also play around with the sequence of the method calls to get some funky results and it will help you understand a little more about the String library. If you can't figure out how to remove the bug .. let me know.
public class StringManipulator { private String text; public StringManipulator() { text = "Please, write your test cases first .Please , write your test cases first."; lowerCaseAllText(); ensureOnlyOneSpaceBetweenWords(); ensureTwoSpaceAfterPeriod(); ensureNoSpacesBeforeCharacter("."); ensureNoSpacesBeforeCharacter(","); upperCaseFirstLetterOfSentences(); } private void lowerCaseAllText(){ text = text.toLowerCase(); System.out.println(text); } private void ensureOnlyOneSpaceBetweenWords(){ StringBuffer buffer = new StringBuffer(); StringTokenizer tokenizer = new StringTokenizer(text, " "); while(tokenizer.hasMoreTokens()){ String token = tokenizer.nextToken(); buffer.append(token); buffer.append(" "); } text = buffer.toString(); System.out.println(text); } private void ensureTwoSpaceAfterPeriod(){ StringBuffer buffer = new StringBuffer(); StringTokenizer tokenizer = new StringTokenizer(text, ".", true); while(tokenizer.hasMoreTokens()){ String token = tokenizer.nextToken(); buffer.append(token); if(token.equals(".")){ buffer.append(" "); } } text = buffer.toString(); System.out.println(text); } private void ensureNoSpacesBeforeCharacter(String character){ StringBuffer buffer = new StringBuffer(text); String badFormat = " " + character; int index = buffer.indexOf(badFormat); while(index != -1){ buffer.delete(index, index + 1); index = buffer.indexOf(badFormat); } text = buffer.toString(); System.out.println(text); } private void upperCaseFirstLetterOfSentences(){ StringBuffer buffer = new StringBuffer(); StringTokenizer tokenizer = new StringTokenizer(text, "."); while(tokenizer.hasMoreTokens()){ String token = tokenizer.nextToken(); token = upperCaseFirstLetterOfSentence(token); buffer.append(token) .append(". "); } text = buffer.toString(); System.out.println(text); } private String upperCaseFirstLetterOfSentence(String sentence){ sentence = sentence.trim(); int length = sentence.length(); if(length > 0){ String firstChar = text.substring(0, 1); String theRest = text.substring(1, length); sentence = firstChar.toUpperCase() + theRest; } return sentence; }
public static void main(String[] args) { new StringManipulator(); } }
|
|