# How to remove a pattern in a table column

25 views (last 30 days)
JFz on 4 Oct 2016
Commented: JFz on 4 Oct 2016
Hi,
I have a table with a column. The column looks like this: 'AB_Off' 'ABC' 'CDE_Off'
I would like to remove the '_Off' from every cell in that column. I tried TF = endsWith, and match, but I always get error. "Error using string string is obsolete and will be discontinued. Use char instead." I don't know how to resolve this. Would you please help? Thanks,
Jennifer

Jan Orwat on 4 Oct 2016
Edited: Jan Orwat on 4 Oct 2016
assuming T - your table, and n - number of column containing these strings you can do as follows:
T{:, n} = regexprep(T{:, n}, '_Off\$', '');
or
T{:, n} = erase(T{:, n}, '_Off');
but second option doesn't detect if it's on the end of a string

#### 1 Comment

JFz on 4 Oct 2016
Thank you!

Hamid Ebrahimi Orimi on 4 Oct 2016
you mean you have a cell which has 'ABC_Off' string in each element? If I understood correctly, the answer is as follow: A={'ABC_Off', 'ABC_Off','ABC_Off'} for i=1:length(A) if A{i}=='ABC_Off' A{i}='ABC'; end end A is your defined cell.

elias GR on 4 Oct 2016
Edited: elias GR on 4 Oct 2016
strfind function is what you need ( https://www.mathworks.com/help/matlab/ref/strfind.html ). I suppose that you have a cell array of string. Then a simple general solution to remove the _Off from the end of the strings (we suppose that _Off only occurs at the end) is:
str={'AB_Off','ABC','CDE_Off'};
for i=1:length(str)
ind=strfind(str{i},'_Off');
if ~isempty(ind)
str{i}=str{i}(1:ind-1);
end
end

#### 1 Comment

JFz on 4 Oct 2016
Thanks a lot.
What I have is a column in a Matlab table. the 'AB_Off', 'ABC', 'CDE_Off' are on different rows in that same column. Is there a way to make all the '_Off' in that column go away? Thanks,
Jennifer