Пытаясь сделать его максимально коротким и читабельным, вы можете сделать следующее:
JavaScript
var match = string.match(/^[^.]*\.|[^.]+/g);
string = match ? match.join('') : string;
Требуется вторая строка кода, потому что если match()
вернет null , мы получим исключение при попытке вызвать join()
для null . (Улучшения приветствуются.)
Objective-J / Cappuccino (расширенный набор JavaScript)
string = [string.match(/^[^.]*\.|[^.]+/g) componentsJoinedByString:''] || string;
Может сделать это в одной строке, потому что его селекторы (такие как componentsJoinedByString:
) просто возвращают null при отправке в null значение, а не выдают исключение.
Что касается регулярного выражения, то я сопоставляю все подстроки, состоящие из (a) начала строки + любого потенциального числа не-точечных символов + точка или (b) любое существующее количество символов без точек . Когда мы объединяем все матчи вместе, мы по существу удаляем любую точку, кроме первой.