Scala: поменять регистр каждого символа в строке - PullRequest
1 голос
/ 07 ноября 2019

Используя Scala, я хочу взять подстроку исходной строки и поменять регистр каждого символа так, чтобы заглавные буквы стали строчными, прописные стали заглавными.

var swapCase = buffer.substring(lwr, upr).to?OTHER?Case

В прошлом я использовал команды .toUpperCase и .toLowerCase, и мне было интересно, есть ли подобная команда для простой замены регистра без необходимости перебирать каждый символ в цикле и оценивать, какая операция необходимадля каждого символа, т.е.:

if(char(x).isUpperCase){char(x).toLowerCase}

else if(char(x).isLowerCase){char(x).toUpperCase}

Короче говоря, есть ли действительно быстрый способ сделать это с помощью "."команда вместо написания нескольких строк.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Это примерно столько, сколько вы получите:

def swapCase(s: String): String =
  s.map(ch => if (ch.isLower) ch.toUpper else ch.toLower)
0 голосов
/ 07 ноября 2019

Альтернативой вкладчику Тима может быть:

def swapCharCase(ch: Char) = if (ch.isLower) ch.toUpper else ch.toLower

def swapCase(s: String): String = s.map(swapCharCase)

Я нахожу его чуть более читабельным - и, возможно, swapCharCase может пригодиться в любом случае.

Чтобы использовать его как.swapCase в соответствии с запросом, используйте класс implicit для предоставления метода расширения:

implicit class CaseStringOps(s: String) {
  def swapCase: String = s.map(swapCharCase)

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...