Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.06.2018, 15:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Сообщение от Artur_Hopf
var object = [{name: 'Иванов А.Г. (тут)', obj: ''}, {name: 'Сидоров  И.М.', obj: ''}, ];
Предложу такое решение...

var a = [
	{name: 'Иванов А.Г. (тут)', obj: ''}, 
	{name: 'Петров Т. В. текст', obj: ''}, 
	{name: 'Смирнова Ф. адрес', obj: ''}, 
	{name: 'Сидоров  И.М.', obj: ''}, 
];
var val;
for (var i=0; i<a.length; i++) {
	a[i].name.replace(/^\S+\s+[А-Я]\.(\s?[А-Я]\.)?/,function(Str){
		val=Str;
		a[i].obj=a[i].name.replace(Str,'');
		return Str;
	});
	a[i].name=val;
	alert(a[i].name+' - '+a[i].obj);
};
Ответить с цитированием
  #12 (permalink)  
Старый 13.06.2018, 15:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если "тут" не содержит точек, то можно удалить лишние мешающие пробелы, а затем найти две части:

var match = 'Иванов   А.  Г.  (тут)'.replace(/\s{2,}/g, ' ').match(/(.+\.\s)([^\.]+)/);
//match[1], match[2] содержат искомое

Последний раз редактировалось laimas, 13.06.2018 в 15:52.
Ответить с цитированием
  #13 (permalink)  
Старый 13.06.2018, 15:34
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,230

Или такое...

var arr = [
	{name: 'Иванов А.Г. (тут)', obj: ''}, 
	{name: 'Петров Т. В. текст', obj: ''}, 
	{name: 'Смирнова Ф. адрес', obj: ''}, 
	{name: 'Сидоров  И.М.', obj: ''}, 
];
for (var i=0; i<arr.length; i++) {
	var a=arr[i].name.match(/^(\S+\s+[А-Я]\.(\s?[А-Я]\.)?)(.*)/);
	arr[i].name=a[1];
	arr[i].obj=a[a.length-1];
	alert(arr[i].name+' - '+arr[i].obj)
};
Ответить с цитированием
  #14 (permalink)  
Старый 14.06.2018, 08:28
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Всем спасибо, написал так
var array = arrayXML2[i].name.split(/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/);
if(array[1]){
      arrayXML[i].name = array[1] + ' ' + array[2] + '.' + array[3] + '.';
     arrayXML[i].element = array[4];
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать строку в шаблонную строку (template literals) daima Элементы интерфейса 5 01.09.2017 17:14
Зачеркнуть строку в таблице myshara (X)HTML/CSS 2 16.10.2014 17:28
Вставить значение переменных в строку someone Общие вопросы Javascript 2 03.11.2013 00:14
float-переменная преобразуется в строку с запятой EugenyK Firefox/Mozilla 4 03.08.2013 06:22
Разобрать строку по байтам, а не по символам? andryshik Общие вопросы Javascript 0 22.09.2008 13:02