예제 #1
0
        private NameAnalysisResult AnalyseCompoundFamilyName(String nameStr)
        {
            String[] parts = nameStr.Split('-');

            if (parts.Length == 1)
            {
                return(this.AnalyseFamilyName(parts[0]));
            }

            CompoundNameResult result = new CompoundNameResult(nameStr);

            foreach (String part in parts)
            {
                result.Parts.Add(this.AnalyseFamilyName(part));
            }

            return(result);
        }
예제 #2
0
        /// <summary>
        /// Analyses a name.
        /// </summary>
        /// <param name="data">The name to analyse.</param>
        /// <returns></returns>
        public List <NameAnalysisResult> Analyse(String data)
        {
            // trim whitespaces from both ends
            data = data.Trim();

            List <NameAnalysisResult> results = new List <NameAnalysisResult>();
            CompoundNameResult        result  = new CompoundNameResult(data);

            // bit simplistic -- will improve later
            String[] parts = data.Split(' ');

            // for now, we will assume that the first name always comes first
            String firstName = parts[0];

            result.Parts.Add(this.AnalyseGivenName(firstName));

            // if there's another part, we'll assume that it's the surname
            if (parts.Length == 2)
            {
                String surname = parts[1];
                result.Parts.Add(this.AnalyseCompoundFamilyName(surname));
            }
            else if (parts.Length > 2)
            {
                // if there are more than 2 parts, we treat everything in the middle
                // as more given names
                for (Int32 i = 1; i < parts.Length - 1; i++)
                {
                    result.Parts.Add(this.AnalyseGivenName(parts[i]));
                }

                String surname = parts.Last();
                result.Parts.Add(this.AnalyseCompoundFamilyName(surname));
            }

            results.Add(result);
            return(results);
        }
예제 #3
0
        private NameAnalysisResult AnalyseCompoundFamilyName(String nameStr)
        {
            String[] parts = nameStr.Split('-');

            if (parts.Length == 1)
                return this.AnalyseFamilyName(parts[0]);

            CompoundNameResult result = new CompoundNameResult(nameStr);

            foreach (String part in parts)
                result.Parts.Add(this.AnalyseFamilyName(part));

            return result;
        }
예제 #4
0
        /// <summary>
        /// Analyses a name.
        /// </summary>
        /// <param name="data">The name to analyse.</param>
        /// <returns></returns>
        public List<NameAnalysisResult> Analyse(String data)
        {
            // trim whitespaces from both ends
            data = data.Trim();

            List<NameAnalysisResult> results = new List<NameAnalysisResult>();
            CompoundNameResult result = new CompoundNameResult(data);

            // bit simplistic -- will improve later
            String[] parts = data.Split(' ');

            // for now, we will assume that the first name always comes first
            String firstName = parts[0];
            result.Parts.Add(this.AnalyseGivenName(firstName));

            // if there's another part, we'll assume that it's the surname
            if(parts.Length == 2)
            {
                String surname = parts[1];
                result.Parts.Add(this.AnalyseCompoundFamilyName(surname));
            }
            else if(parts.Length > 2)
            {
                // if there are more than 2 parts, we treat everything in the middle
                // as more given names
                for(Int32 i = 1; i < parts.Length - 1; i++)
                {
                    result.Parts.Add(this.AnalyseGivenName(parts[i]));
                }

                String surname = parts.Last();
                result.Parts.Add(this.AnalyseCompoundFamilyName(surname));
            }

            results.Add(result);
            return results;
        }