从全名中删除中间名称,并以大写字母开头

时间:2018-05-17 18:17:37

标签: c#

下午好! 我遇到了一个功能问题。 我需要获得整个名字的中间名或名称,例如:“mikaeldaconceiçãoSouzaluz”。 - 结果应该是:“mikael light”。 但是,我还需要将结果保留为大写字母中的第一个字母,例如:“Mikael Luz”。 我有以下代码作为源代码,之后的代码是测试类,其中预期结果必须达到源代码。 你能帮助我吗? 谢谢。

namespace TesteArgo
{
    public class teste3
    {
        //ESSA FUNÇÃO É A QUE EU USO PARA TRANSFORMAR LETRAS MINUSCULAS EM MAIUSCULAS NO NOME.
        public string NomesComPrimeirasLetrasMaiusculas(string nome)
        {
        string[] excecoes = new string[] { "e", "de", "da", "do", "dos" };
        var palavras = new Queue<string>();
        foreach(var palavra in nome.Split(' '))
        {
            if (!string.IsNullOrEmpty(palavra))
            {var emMinusculo = palavra.ToLower();
             var letras = emMinusculo.ToCharArray();
             if (!excecoes.Contains(emMinusculo)) letras[0] = char.ToUpper(letras[0]);
             palavras.Enqueue(new string(letras));
            }
        }
        return string.Join(" ", palavras);
        }


        //ESSA É A FUNÇÃO QUE USO PARA REMOVER OS NOMES DO MEIO DE UM NOME COMPLETO, PORÉM NÃO CONSIGO APLICAR AS DUAS FUNÇÕES JUNTAS.
        public string RemoverNomeDoMeio(string nome)
        {   string nomeCompleto = "cleber reis pereira";
            string primeiroNome = "";
            string sobreNome = "";
            string[] arrayNome = nomeCompleto.Split(' ');

            if (arrayNome[arrayNome.Length - 2].Length < 4)
            {
             //percorro o array e enquanto o campo não for o penúltimo eu incluo na variável primeiroNome
             for (int i = 0; i < arrayNome.Length - 2; i++)
             {
                  primeiroNome += arrayNome[i] + " ";
             }

             //percorro o array a partir do penúltimo campo e incluo os valores na variável sobreNome
             for (int i = arrayNome.Length - 2; i <= arrayNome.Length - 1; i++)
             {
                 sobreNome += arrayNome[i] + " ";
             }

             //aqui é só colocar a saída dos dados, lembrando de eliminar os espaços em branco no início e 
             //fim das variáveis
            }

            teste3 teste = new teste3();
            var test1 = teste.NomesComPrimeirasLetrasMaiusculas(nome);          

            return test1;
        }
    }
}

AQUIÉORESULTADO EM ASSERT.AREEQUAL QUE DEVE SER COMO RESULTADO:

1 个答案:

答案 0 :(得分:0)

这看起来像C#,所以我将在C#中回答这个问题。

根据空格拆分名称,并取第一个和最后一个元素。我在这里使用三元条件,但是一个简单的if-else结构也可以正常工作。

const fs = require('fs');

fs.rename(./*.txt, ./dir/*.txt, err => {
  if (err) throw err;
  console.log('Move complete!');
})

接下来,返回两个名称(如果不为空),首字母大写。这有一个方便的开箱即用功能。

var arrayNome = nomeCompleto.Split(' ');
var primeiroNome = arrayNome.Count() != 0? arrayNome[0] : String.Empty; // Empty if there are no words (nomeCompleto is empty).
var sobreNome = arrayNome.Count() > 1? arrayNome[arrayNome.Count()-1] : String.Empty; // Empty if there is only one word or no words at all.