Soru sor.txt dosyasındaki birkaç veriyi başka verilerle değiştirmek istiyorum
oktycl tarafından 4 yıl önce soruldu


Benim txt dosyam çok büyük bu yüzden bu kısmını attı,burada görülen "TUBO120X120X120X8" verisi yerine "TUBE120*8" yazmak  istiyorum.
ilk önce şu hatayı aldım: First argument must be a string array, character vector, or cell array of character vectors.
sonra cell'e çevirmeye çalıştım fileID' yi sonra da şu hatayı aldım: Conversion to cellstr from double is not possible.
Ne yaptıysam yazamadım.Yardımcı olur musunuz.
Teşekkürler…
 
 
 
 
 

10 Cevap
En iyi cevap
Caglar Yönetici tarafından 4 yıl önce cevaplandı

Düzeltme:

function [] = dosyaDegistir(mevcut_dosya, eski_yazi, yeni_yazi, yeni_dosya)
mevcut_dosya_icerik = extractFileText(mevcut_dosya);
guncellenmis_icerik = replace(mevcut_dosya_icerik, eski_yazi, yeni_yazi);
writematrix(guncellenmis_icerik , yeni_dosya);
end
hakkans Yönetici tarafından 4 yıl önce cevaplandı

Burada dosyanızı nasıl yüklediğiniz önemli sanırım. İnternetten şöyle bir örnek buldum:

fid = fopen('dosyaadi.txt','r'); %burada dosyaadi kısmını dosyanızın ismiyle değiştireceksiniz
f=fread(fid,'*char')';

Ondan sonra bu şekilde yüklenmiş dosyada bahsettiğiniz değişikliği yapmak için:

f = strrep(f,' 'TUBO120X120X120X8', 'TUBE120*8');

komutunu kullanabilirsiniz. İşe yarar mı emin değilim ama bulduğum kaynak linki de aşağıda:

https://www.mathworks.com/matlabcentral/answers/90662-how-to-replace-a-particular-string-in-text-file

Caglar Yönetici tarafından 4 yıl önce cevaplandı

Metni okumak için daha güncel extractFileText ve değiştirmek için replace fonksiyonları da kullanılabilir. Ayrca, dosya içeriği tablarla ayrılmış bir tablo gibi görünüyor, öyleyse dosyayı düz metin olarak okumak yerine readtable ile okuyabilir ve sadece ilki sutunda değişiklik yapabilirsiniz.

Caglar Yönetici tarafından 4 yıl önce cevaplandı

Matlab arayüzünde, metin dosyasına sağ tıklayıp "Import Data…"ya basarsanız, readtable kullanımı da daha pratik olacaktır.

oktycl tarafından 4 yıl önce cevaplandı


Hakan Bey sizin yazdığınız gibi yapmaya çalıştım ama yinede olmadı.
Çağlar bey Import Data kısmından yaptım bir kısmını ama WORKSPACE 'te oluşan change ı bir türlü txt olarak yazdıramadım.Dün den beri yazdıklarınız üzerinde çalıştım.Yardımlarınız için teşekkür ederim.WORKSPACE den nasıl yazdıracağımı bilmiyorum.Herhangi bir fikriniz varsa paylaşır mısnız?

Caglar Yönetici tarafından 4 yıl önce cevaplandı

Dosyayı, en azından bir kısmını gönderebilir misiniz?
 

oktycl tarafından 4 yıl önce cevaplandı

Buraya nasıl dosyanın bir kısmını ekleyebilirim?
 

Caglar Yönetici tarafından 4 yıl önce cevaplandı

Buraya yüklenmiyor sanırım. Wetransfer falan olabilir.
 
Bu arada, değişimlerin hepsini elle mi yazacaksınız yoksa bir mantığı olacak mı?  “TUBO120X120X120X8” verisi yerine “TUBE120*8” demişsiniz, ama altta “TUBO120X120X120X10” da var. 

Caglar Yönetici tarafından 4 yıl önce cevaplandı

function [] = dosyaDegistir(mevcut_dosya, eski_yazi, yeni_yazi, yeni_dosya)
mevcut_dosya_icerik = extractFileText(mevcut_dosya);
guncellenmis_icerik = replace(mevcut_dosya_icerik, eski_yazi, yeni_yazi);
writematrix(yeni_yazi, yeni_dosya);
end

oktycl tarafından 4 yıl önce cevaplandı

Çağlar Bey, yazdığınız fonksiyon çok işime yaradı.Bir kaç değişiklikle kullandım.Yardımlarınız için çok teşekkür ederim.