123456789101112131415161718192021222324252627282930 |
- function str = makeValidFieldName(str)
- % From MATLAB doc: field names must begin with a letter, which may be
- % followed by any combination of letters, digits, and underscores.
- % Invalid characters will be converted to underscores, and the prefix
- % "x0x[Hex code]_" will be added if the first character is not a letter.
- isoct=exist('OCTAVE_VERSION','builtin');
- pos=regexp(str,'^[^A-Za-z]','once');
- if(~isempty(pos))
- if(~isoct)
- str=regexprep(str,'^([^A-Za-z])','x0x${sprintf(''%X'',unicode2native($1))}_','once');
- else
- str=sprintf('x0x%X_%s',char(str(1)),str(2:end));
- end
- end
- if(isempty(regexp(str,'[^0-9A-Za-z_]', 'once' ))) return; end
- if(~isoct)
- str=regexprep(str,'([^0-9A-Za-z_])','_0x${sprintf(''%X'',unicode2native($1))}_');
- else
- pos=regexp(str,'[^0-9A-Za-z_]');
- if(isempty(pos)) return; end
- str0=str;
- pos0=[0 pos(:)' length(str)];
- str='';
- for i=1:length(pos)
- str=[str str0(pos0(i)+1:pos(i)-1) sprintf('_0x%X_',str0(pos(i)))];
- end
- if(pos(end)~=length(str))
- str=[str str0(pos0(end-1)+1:pos0(end))];
- end
- end
|