Как использовать все символы строки после.как мобильная клавиатура - PullRequest
0 голосов
/ 12 декабря 2018

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

Я пробовал приведенные ниже решения, но они не удовлетворяютмое требование:

$('#test').blur(function(event) {
 var value = $(this).val();

 var output = "";

 output = value.charAt(0).toUpperCase() + value.slice(1);

});

выше код только с использованием заглавных букв первого символа.

Пример ввода:

l orem ipsumэто просто фиктивный текст полиграфической и наборной индустрии. l orem ipsum был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взял галеру типа и скремблировал ее, чтобы сделать книгу типовых образцов. t это все!

Ожидаемый результат:

L orem Ipsum - просто фиктивный текст индустрии печати и набора текста. L orem Ipsum является стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взял камбуз шрифта и скремблировал его, чтобы сделать книгу типовых образцов. T это все!

Ответы [ 5 ]

0 голосов
/ 24 декабря 2018
let paragraph = document.querySelector('#test').textContent;

let result = paragraph.split('.')
    .map(sentence => sentence.trim())
    .map(sentence => {
        sentence = sentence.replace(sentence[0], sentence[0].toUpperCase()) + sentence.slice(1);
        return sentence;
    });


console.log(result.join('. '));
0 голосов
/ 12 декабря 2018

Предположим, что ваш необработанный ввод не содержит .., тогда ниже приведено работающее решение:

const raw = `lorem ipsum is simply dummy text of the printing and typesetting industry. lorem ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.that's it!`

const formatted =
  raw
    .split('.')
    .map(sentence => sentence.trim())
    .map(sentence => sentence.charAt(0).toUpperCase() + sentence.slice(1))
    .join('. ')

console.log(formatted)
// Lorem ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. That's it!
0 голосов
/ 12 декабря 2018

Можно сопоставить использование метода String#replace() со следующим регулярным выражением:

/\.\s*\w/

в сочетании с пользовательским обратным вызовом замены, в котором заглавная строка соответствует для достижения этой цели.Основная идея здесь заключается в том, чтобы использовать заглавную букву в любой подстроке, которая является первой буквой, следующей непосредственно за символом полной остановки (например, \.).Регулярное выражение также учитывает случаи, когда между полной точкой и следующим символом (например, \w) встречается ноль или более пробелов (например, \s*):

var input = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.That's it!";

var result = input.replace(/\.\s*\w/, function(match) {
  return match.toUpperCase();
});

console.log('Regular expression based approach', result);

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

const input = `lorem ipsum is simply dummy text of the printing and typesetting industry. lorem ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.that's it!`;

console.log('Non regular expression based approach:',

input
.split('.')
.map((sentence) => {

  for (var i = 0; i < sentence.length; i++) {

    if (sentence[i] !== ' ') {
    
      sentence = sentence.substr(0, i) + sentence[i].toUpperCase() + sentence.substr(i + 1);      
      break;
    }
  }

  return sentence
})
.join('.')
)
0 голосов
/ 12 декабря 2018

попробуйте

<script>
      var input = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.That's it!";

      console.log( input.charAt(0).toUpperCase() + input.slice(1))

</script>
0 голосов
/ 12 декабря 2018

Вы можете использовать регулярное выражение: сопоставить либо начало строки, либо точку, за которой следуют пробелы, затем сопоставить алфавитный символ и использовать функцию замены для вызова toUpperCase для этого символа.Для правильной замены букв, следующих за ? и ! с, а также ., используйте набор символов [.?!]:

const input = `lorem ipsum is simply dummy text of the printing and typesetting industry. lorem ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.that's it!`;
const cleaned = input.replace(
  /(^|\[.?!] *)([a-z])/g,
  (_, g1, g2) => g1 + g2.toUpperCase()
);
console.log(cleaned);

Кому не заменить многоточие, вы можете сопоставить еще один символ перед . в первой группе:

const input = `foo bar. bar baz... baz buzz? buzz foo`;
const cleaned = input.replace(
  /(^|(?:[?!]|[^.]\.) *)([a-z])/g,
  (_, g1, g2) => g1 + g2.toUpperCase()
);
console.log(cleaned);

Рисунок

(^|(?:[?!]|[^.]\.) *)([a-z])

означает:

  • (^|(?:[?!]|[^.]\.) *) - Захват в 1-й группе:
    • ^ - начало строки или:
    • (?:[?!]|[^.]\.) - совпадение с концом предыдущего предложения: либо
      • [?!] - вопрос или восклицательный знак, либо
      • [^.]\. - без периода, за которым следует период
    • *, за которым следует любое количество пробелов
  • ([a-z]) - Захват во 2-й группе любого алфавитного символа

Затем

  (_, g1, g2) => g1 + g2.toUpperCase()

заменяется первой группой, объединенной со второй группой в нижнем регистре.

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