www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoppoint/CheckNames.m

    function [op,changed_i,oldnames,newnames] = CheckNames(op,pr)
% [op,changed_i] = CheckNames(op)
% Ensure unassigned columns have unique names within project

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.



check = ~isvalid(op.ptrlist) | ...
    op.created_flag==1;

check = find(check);

changed_i = []; oldnames = []; newnames = [];

for i = 1:length(check)
    oldname = op.orig_name{check(i)};
    newname = deblank(uniquename(pr,oldname));
    if ~strcmp(oldname,newname)
        newname = iNewDataName(op,oldname,pr);
        changed_i = [changed_i check(i)];
        oldnames = [oldnames {oldname}];
        newnames = [newnames {newname}];
        op.orig_name{check(i)} = newname;
    end
end

function newname = iNewDataName(op,oldname,pr)
% add _Data if name is already in project

% make sure any empty names are strings
op.orig_name(cellfun('isempty',op.orig_name))='';
%remove '_Data' from name so we don't get a '_Data_Data' suffix
oldname=regexprep(oldname,'(\_Data\_?[\d]*)$','');

% look for other oldname_Data items in the data set
tok=regexp(op.orig_name,[oldname,'\_Data\_?(\d*)$'],'tokens','once');
OK = cellfun('isempty',tok);
% add _Data suffix as this is preferable to _1 etc.
if ~all(OK)
    % oldname_Data already exists in data set so add index to name
    ind = 1;
    for i=find(~OK)
        suffix = tok{i}{1};
        if ~isempty(suffix)
            ind = max(ind,str2double(suffix)+1);
        end
    end
    suffix = sprintf('_Data_%d',ind);
else
    suffix = '_Data';
end
%final sanity check to make sure the name is unique
newname = deblank(uniquename(pr,[oldname,suffix]));