I wrote this and it seems to work. Im worried that what this does though is just change it to a string. Im still testing it but if someone knows this is defo wrong then please tell me.
Many thanks for reply.

DECLARE
v_string_origional VARCHAR2(100);
v_string_new VARCHAR2(100);
v_table_name VARCHAR2(150);
v_field_name VARCHAR2(150);
v_clob CLOB;
v_clob2 CLOB;
v_row_id VARCHAR2(100);
str VARCHAR2(2000);
str2 VARCHAR2(2000);
v_res varchar2(1000);
BEGIN
v_string_origional := 'old string';
v_string_new := 'replacement string;
v_table_name := 'temp';
v_field_name := 'field1';
v_row_id := 'rowid1';
str := 'select ' || v_field_name || ' from ' || v_table_name || ' where rowid = ''' || v_row_id || '''';
EXECUTE IMMEDIATE str INTO v_clob;
v_clob2 := REPLACE(v_clob, v_string_origional, v_string_new);
str2 := 'update ' || v_table_name || ' set ' || v_field_name || ' = '''||v_clob2||''' where rowid = ''' || v_row_id || '''';
EXECUTE IMMEDIATE str2;
END;