Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разобрать строку (https://javascript.ru/forum/misc/74095-razobrat-stroku.html)

ksa 13.06.2018 15:27

Цитата:

Сообщение от 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);
};

laimas 13.06.2018 15:31

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

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

ksa 13.06.2018 15:34

Или такое...

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)
};

Artur_Hopf 14.06.2018 08:28

Всем спасибо, написал так :thanks:
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];
}


Часовой пояс GMT +3, время: 07:02.