이 응용 프로그램의 디자인 결정 사항 중 하나는 모든 이미지 제목을 각 단어의 첫 번째 글자를 대문자로 표시하는 표준 포맷을 사용하여 표시하는 것입니다(영어 제목에서 일반적으로 대문자로 쓰이지 않는 일부 단어 제외). 텍스트 파일에 적절하게 포맷된 제목이 포함되었다고 가정하는 것이 아니라, 이 응용 프로그램은 텍스트 파일에서 제목을 추출할 때 직접 제목을 포맷합니다.
이전 코드 샘플에서 개별 이미지 메타데이터 값 추출의 일부로 다음 코드 행이 사용됩니다.
imageInfo.title = normalizeTitle(imageProperties[1]);
이 코드에서 텍스트 파일의 이미지 제목은 ImageInfo 객체에 저장되기 전에
normalizeTitle()
메서드를 통해 전달됩니다.
private function normalizeTitle(title:String):String
{
var words:Array = title.split(" ");
var len:uint = words.length;
for (var i:uint; i < len; i++)
{
words[i] = capitalizeFirstLetter(words[i]);
}
return words.join(" ");
}
이 메서드는
split()
메서드를 사용하여 제목을 개별 단어(공백 문자로 구분)로 분리한 뒤
capitalizeFirstLetter()
메서드를 통해 각 단어를 전달하고 Array 클래스의
join()
메서드를 사용하여 단어를 단일 문자열로 다시 결합합니다.
이름에서 알 수 있듯이
capitalizeFirstLetter()
메서드는 각 단어의 첫 번째 글자를 대문자로 바꾸는 작업을 합니다.
/**
* Capitalizes the first letter of a single word, unless it's one of
* a set of words that are normally not capitalized in English.
*/
private function capitalizeFirstLetter(word:String):String
{
switch (word)
{
case "and":
case "the":
case "in":
case "an":
case "or":
case "at":
case "of":
case "a":
// Don't do anything to these words.
break;
default:
// For any other word, capitalize the first character.
var firstLetter:String = word.substr(0, 1);
firstLetter = firstLetter.toUpperCase();
var otherLetters:String = word.substring(1);
word = firstLetter + otherLetters;
}
return word;
}
영어에서는 제목에 "and", "the", "in", "an", "or", "at", "of" 또는 "a"와 같은 단어가 있을 경우 해당 단어의 첫 자는 대문자로 쓰지
않습니다
(간소화된 규칙 버전). 이 논리를 실행하기 위해 코드에서는 먼저
switch
문을 사용하여 단어가 대문자로 쓰면 안 되는 단어인지 확인합니다. 대문자로 쓰면 안 되는 단어 중 하나일 경우 코드는
switch
문을 빠져 나옵니다. 반면 대문자로 써야 할 단어일 경우 다음과 같이 여러 단계를 수행합니다.
-
단어의 첫 번째 글자가
substr(0, 1)
을 사용하여 추출됩니다. 이 메서드는 인덱스 0에 있는 문자(첫 번째 매개 변수
0
으로 지정된 대로 문자열의 첫 번째 글자)로 시작되는 하위 문자열을 추출합니다. 하위 문자열은 두 번째 매개 변수
1
로 지정된 길이 대로 한 문자가 됩니다.
-
이 문자를
toUpperCase()
메서드를 사용하여 대문자화합니다.
-
원래 단어의 나머지 문자는
substring(1)
을 사용하여 추출되며, 이 메서드는 인덱스 1에서 시작하는 하위 문자열(두 번째 글자)을 문자열의 끝까지(
substring()
메서드의 두 번째 매개 변수를 생략하여 지정) 추출합니다.
-
최종 단어는 문자열 연결(
firstLetter + otherLetters
)을 사용하여 대문자로 바뀐 첫 번째 글자와 나머지 글자를 결합하여 만들어집니다.