txt dosyasında belirli karakterlerin sağındakilerini silme? -Çözüldü

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

txt dosyasında belirli karakterlerin sağındakilerini silme? -Çözüldü

Mesaj gönderen anxious »

merhaba arkadaşlar misal txt dosyasında karışık rakamlar harfler var bunların sağında ne var ne yok silmek istiyorum bir örnek hazırlıyorum ama tam hazırlayamadım şimdi eklemeye çalışacağım takıldığım bir kaç nokta var onları yapabilirsem örneği paylaşacağım daha iyi anlaşılır :)


[]ali-x1semih
|-veli.+5umut
/ahmet/\-7ayşe
suat+n[sibel
kadir-m#melih
-*mehmet~x2merve
"'mustafa=x10selin
++ayşe$x8cihan
mesela karmaşık txt dosyam ortasında bazen x ile başlayan bazen + bazende - ekleniyor fakat bu hiç birzaman değişmiyor ya x ile başlıyor ya - yada + ile
bu dosyada belirlediğim karakterlere göre x1 x3 x2 +8 -2 +n -m bunların sağında ne varsa silsin istiyorum.

örnek kodumu eklemeye çalışırım birazdan teşekkürler.
buda örnek kodlarım beceremedim yardımcı olurmusunuz

Kod: Tümünü seç

Global $aKarakterler = "x1,x3,x7,-m,+5,vs..."
Local $aDosyatxt = "c:\test.txt"
eğer yukarıda belirttiğim karakterler var ise sağındakilerini sil
Local $aDosyam = StringRegExpReplace(StringRegExpReplace(FileRead($aDosyatxt), 'buraya ne gelecek', @CR)

ConsoleWrite(($aDosyam) & @CRLF)
$aDosyaAC = FileOpen($aDosyatxt, 2)
If $aDosyaAC = -1 Then
    MsgBox(0, "Hata!", "Dosya açılamadı veya yok!")
    Exit
EndIf
FileWrite($aDosyaAC, $aDosyam)
FileClose($aDosyaAC)
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen BlueLife »

@anxious
Basit bir şey örnek hazırladım. Kendine göre kurcalayıp ayarlarsın...

Kod: Tümünü seç

Global $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> "\" Then $ScriptDir &= "\"

#cs

	[]ali-x1semih
	|-veli.+5umut
	/ahmet/\-7ayşe
	suat+n[sibel
	kadir-m#melih
	-*mehmet~x2merve
	"'mustafa=x10selin
	++ayşe$x8cihan

#ce

Global $Okunacak_Dosya = $ScriptDir & "test.txt"
Global $Yazilacak_Dosya = $ScriptDir & "replace.txt"
; ---------------------------------------
Local $FileOpen = FileOpen($Okunacak_Dosya, 0)
If $FileOpen = -1 Then
	MsgBox(16, "Hata!", "Dosya okunmamadı!")
	Exit
EndIf
Local $ReadString = FileRead($FileOpen)
FileClose($FileOpen)
; ---------------------------------------
;Bazı karakterlerin dügün algılanması için başlarına \ . vs. gibi karakteler eklemek gerebiliyor - ve + da olduğu gibi.
Local $pattern = '(.*?)(x10|x[0-9]|\-m|\+5)'
Local $ReplaceString = StringRegExpReplace($ReadString, $pattern, "")
; ---------------------------------------
;Okunan ve düzenlenen bilgi aynı değilse dosyaya yaz
If $ReadString <> $ReplaceString Then

	$FileOpen = FileOpen($Yazilacak_Dosya, 2)
	If $FileOpen = -1 Then
		MsgBox(16, "Hata!", "Dosya yazılmak için açılamadı!")
		Exit
	EndIf

	ConsoleWrite(($ReplaceString) & @CRLF)
	FileWrite($FileOpen, $ReplaceString)
	FileClose($FileOpen)
EndIf
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen anxious »

yanlış tarif ettim kusuruma bakmayın istediğim gibi ama sol tarafı siliyor ben sağını silsin istiyorum
misal
Resim
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen BlueLife »

@anxious
Aşağıdakini kurcalarsın... Kolay gelsin...

Kod: Tümünü seç

Global $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> "\" Then $ScriptDir &= "\"

#cs

   ali-x1semih
   veli.+5umut
   ahmet/\-7ayşe
   suat+n[sibel
   kadir-m#melih
   mehmet~x2merve
   mustafa=x10selin
   ayşe$x8cihan

#ce

Global $Okunacak_Dosya = $ScriptDir & "test.txt"
Global $Yazilacak_Dosya = $ScriptDir & "replace.txt"
; ---------------------------------------
Local $FileOpen = FileOpen($Okunacak_Dosya, 0)
If $FileOpen = -1 Then
   MsgBox(16, "Hata!", "Dosya okunmamadı!")
   Exit
EndIf
Local $ReadString = FileRead($FileOpen)
$ReadString = StringReplace($ReadString,@CRLF,@LF)
FileClose($FileOpen)
; ---------------------------------------
Local $pattern = '(x\d+|\+\d+|\-\d+|\-m|\-n|\+m|\+n)(.*)'
Local $ReplaceString = StringRegExpReplace($ReadString, $pattern, "")
$ReplaceString = StringReplace($ReplaceString,@LF,@CRLF)
; ---------------------------------------
;Okunan ve düzenlenen bilgi aynı değilse dosyaya yaz
If $ReadString <> $ReplaceString Then

   $FileOpen = FileOpen($Yazilacak_Dosya, 2)
   If $FileOpen = -1 Then
      MsgBox(16, "Hata!", "Dosya yazılmak için açılamadı!")
      Exit
   EndIf

   ConsoleWrite(($ReplaceString) & @CRLF)
   FileWrite($FileOpen, $ReplaceString)
   FileClose($FileOpen)
EndIf
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen anxious »

@BlueLife teşekkürler istediğim bu sormak istediğim birşey daha var :)
ortadaki belirttiğimiz karakterlerin kalmasını istersem sadece sağı silinsin bu nasıl olacak?
Ayrıca $pattern değişkeninin sonuna eklediğiniz şunun anlamı nedir? (.*)
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen BlueLife »

@anxious

StringRegExp... çok fazla kullanmadığım ve haliyle fazla bilmediğim bir komut aslında. İlgili belirlediğin karakterlerin kalmasını istersen aşağıdaki satırı;
Local $ReplaceString = StringRegExpReplace($ReadString, $pattern, "")
Aşağıdaki ile değiştirmelisin;
Local $ReplaceString = StringRegExpReplace($ReadString, $pattern,'$1')

Tabi yazdığını doğru anladıysam. (.*) ise; yukarıda örnekteki ilgili satırda bulunan karakterlerin sağındaki diğer karakteleri ifaede ediyor diyebilirim. Onu silersen, sadece tanımlı karakterler silinecektir. Biraz denemeler yapıp kurcalarsan mantığını anlarsın.
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen anxious »

bu şekilde düzenlemem doğrumudur acaba yani karakterler silinmeyecek sağ tarafında ne var ne yok silinecek denedim olumlu fakat sormak istedim doğumu yaptım acaba diye
Local $pattern = '(karakter1|\karakter2|\karakter3|\karakter4)(.*)'
Local $ReplaceString = StringRegExpReplace($ReadString, $pattern,'$1')
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: txt dosyasında belirli karakterlerin sağındakilerini silme?

Mesaj gönderen BlueLife »

@anxious

Tam olarak ne için ne şekilde nasıl bir içerikte kullanacağını bilmediğim için net bir şey söyleyemem. Lakin taslak olarak yazdığın yanlış görünmüyor.
$pattern satırındaki karakterleri yazarken dikkat etmeye özen göster. Misal text içeriğindeki - + gibi karakterle işlem yaparken bunları direk yazamıyorsun. Bunun gibi bir takım başka karakterlerde olacaktır. Her eklediğini deneyerek eklersen sorun yaşamazsın diye düşünmekteyim.

Kolay gelsin...
Cevapla