Başka bir seçenek:
NORMALSTR := $(patsubst "%",%,$(QUOTEDSTR))
Beta'nın cevabı dizede her teklifi kaldıracaktır. Yukarıdaki çözüm SADECE başında ve sonunda görünen tırnakları kaldıracaktır. Örneğin: bu değer değişmeyecektir patsubst çözüm kullanırken
QUOTEDSTR := -DTITLE=\"Title\"
Beta'nın cevabı -DTITLE=\Title\
değeri ile sonuçlanacaktır.
Ne istediğinize bağlı olarak değişir.
DÜZENLEME
bu boşluğu ele almak istiyor ve hala sadece @ stefanct yorumuna göre değişken başlangıcı/sonu alıntı bulunamadı, bazı oyun oynar gerekecek. Öncelikle dizinizde görünmeyeceğini bildiğiniz bir boşluk olmayan karakter bulmanız gerekir. ^
'u seçelim ama isterseniz başka bir şey seçebilirsiniz.
algoritmadır: Elbette
# Get a variable S that contains a single space
E :=
S := $E $E
NORMALSTR := $(subst ^,$S,$(patsubst "%",%,$(subst $S,^,$(QUOTEDSTR))))
: o zaman bu gibi mekanlara tekrar o karakterin tüm örneklerini dönüştürmek, daha sonra ortaya çıkan tek bir "kelime" den alıntılar kaldırmak, bu karaktere tüm boşlukları dönüştürmek hala komplikasyonlar var; Bu, örneğin, SEKME gibi diğer boşluk karakterlerini değil, yalnızca boşlukları işler.
Dize alıntı dizesi kaçış karakterleri içeriyor mu? Yani, örn. \ "Alıntılanan bir dizge" içinde "Tırnaklar". –
@EldarAbusalimov Şu an için. Benim durumum oldukça basit. –