@Tarakkolya

Как разделить в camelCase строку на слова?

Например есть строка: helloMyNameIs.
Можно ли как то из этой строки получить массив строк: [ "Hello", "My", "Name", "Is" ]?
  • Вопрос задан
  • 1259 просмотров
Решения вопроса 1
arxont
@arxont
C# программист
Решение в лоб
var text = "helloMyNameIs";
var temp = "";

var myAL = new ArrayList();

foreach (char c in text)
{                
  if (Char.IsUpper(c) && temp != "")
  {
    myAL.Add(temp);
    temp = c.ToString();
  }  
  else
  {
    temp = temp + c.ToString();
  }
}
myAL.Add(temp);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Neuroware
@Neuroware
Программист в свободное от работы время
Если интерисует только решение и не важна производительность можно сделать последовательность helloMyNameIs.Replace("A",Char(999)+"A") где вместо А будут все заглавные буквы по очереди, в итоге получится исходный текст разделителями в котором являются символы Char(999)
Ответ написан
Комментировать
DmitryITWorksMakarov
@DmitryITWorksMakarov
Можно через регулярное выражение:
Regex
     .Matches("helloMyNameId", 
              @"^[a-z]*|(\G[A-Z][a-z]*)")
     .Cast<Match>()
     .Select(match=>match.Value)
     .Select(str=>char.IsLower(str[0])?str.Substring(0,1).ToUpper()+str.Remove(0,1):str)
     .ToArray();
Ответ написан
Комментировать
@avtoelectronic1987
let text = "helloMyNameIs";
let newText = "";
for(let i =0; i< text.length; i++) {
i === 0 ? newText+=text[i].toUpperCase() :
text[i].charCodeAt(0) !== text[i].toUpperCase().charCodeAt(0) ?
newText+=text[i] : newText += ` ${text[i].toLowerCase()}`
}
console.log(newText)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы