user3641311
user3641311

Reputation: 185

Extract value MATLAB

I need to extract the first value of the following code:

3.43099,70.8539,91.701,FAIL

The file has the '.sol' extension, but it can be read in notepad or Matlab.

I just want to know how to to read in all *.sol files in a folder and how to write the extracted value in a text file.

Thanks a lot, i would be grateful.

NEW

ita='"';
for i=1:size(z,2)
word_to_replace=input('Replace? ','s');
tik=input('Replacement? ','s');
coluna=input('Column? ');
files = dir('*.txt');
for i = 1:numel(files)
    if ~files(i).isdir % make sure it is not a directory
        contents = fileread(files(i).name);
        fh = fopen(files(i).name,'w');
        val=num2str(z(i,coluna));
        word_replacement=strcat(tik,val,ita);
        contents = regexprep(contents,'word_to_replace','word_replacement');
        fprintf(fh,contents); % write "replaced" string to file
        fclose(fh) % close out file
    end
end
end

Many thanks

Upvotes: 1

Views: 197

Answers (1)

MZimmerman6
MZimmerman6

Reputation: 8593

File extension does not make a difference as to what MATLAB can "read", use the fileread command to load in the file and parse its contents. You can then split on commas, since it looks like it is comma separated

files = dir('*.sol');
fh = fopen('outFile.txt','w');
for i = 1:numel(files)
    if ~files(i).isdir % make sure it is not a directory
        contents = fileread(files(i).name);
        parts = regexp(contents,',','Split');
        fprintf(fh,[parts{1},'\n']);
    end
end
fclose(fh)

This should do what you want. It will find all files in the current directory with the .sol extension, loop through all of them, grab the first value, and write it out to a text file.

Find and replace

Finding and replacing is relatively simple as well. You can do the same looping, read the file contents, run a replacement, and then rewrite that out to the same file.

files = dir('*.sol');
for i = 1:numel(files)
    if ~files(i).isdir % make sure it is not a directory
        contents = fileread(files(i).name);
        fh = fopen(files(i).name,'w'); % open handle to same file just read for overwriting
        contents = regexprep(contents,'toReplace','replacement'); % do string replacement
        fprintf(fh,contents); % write "replaced" string to file
        fclose(fh) % close out file
    end
end

Upvotes: 2

Related Questions