স্ট্রিং থেকে কীভাবে সজ্জা (পাঠ্য বৈশিষ্ট্য) ফেলা যায়?


18

একটি "সজ্জিত স্ট্রিং" দ্বারা আমি এর অর্থ এমন কিছু

#("foo" 0 4 (fontified t face font-lock-function-name-face))

... "সরল স্ট্রিং" এর বিপরীতে

"foo"

(যদি এলিস্প কোডটি কোনও বাফার থেকে সরাসরি স্ট্রিং পড়ে, এটি এটি সজ্জিত হতে পারে))

কোনও সজ্জিত স্ট্রিংটিকে একটি সরল স্ট্যান্ডে রূপান্তর করার সহজ উপায় কী (সমস্ত সজ্জা ফেলা)?


7
সাবস্ট্রিং-নো-প্রোপার্টি
ড্যান

আপনার কেন এই বৈশিষ্ট্যগুলি সরানো দরকার? এগুলি সাধারণত কোনও ক্ষতি করে না। কেবল ভান করুন যে তাদের অস্তিত্ব নেই একটি ভাল যথেষ্ট সমাধান হতে পারে।
ইয়ংফ্রোগ

উত্তর:


16

[আপনার যথাযথ স্ট্রিংটি ভুল দেখাচ্ছে - সম্ভবত আপনি এটি ভুলভাবে অনুলিপি করেছেন। fooকেবলমাত্র 3 টি অক্ষর রয়েছে, সুতরাং এটি 0 থেকে 4 অক্ষরে (যেমন, অক্ষর 0, 1, 2, এবং 3 - এটি 4 টি অক্ষর) দ্বারা সজ্জিত হওয়া অসম্ভব। আমি এখানে উদাহরণে 4 এর পরিবর্তে 3 ব্যবহার করি]]

(let* ((foo    #("foo" 0 3 (fontified t face font-lock-function-name-face)))
       (start  0)
       (end    (length foo)))
  (set-text-properties start end nil foo)
  foo)

set-text-propertiesএকটি অন্তর্নির্মিত ফাংশন C source code

(set-text-properties START END PROPERTIES &optional OBJECT)

সম্পূর্ণরূপে থেকে টেক্সট বৈশিষ্ট্য প্রতিস্থাপন STARTকরতে END

তৃতীয় যুক্তি PROPERTIESনতুন সম্পত্তি তালিকা।

OBJECTTheচ্ছিক চতুর্থ আর্গুমেন্টটি যদি একটি বাফার হয় (বা শূন্য, যার অর্থ বর্তমান বাফার), STARTএবং ENDহয় বাফার পজিশনগুলি (পূর্ণসংখ্যা বা চিহ্নিতকারী)। তাহলে OBJECTএকটি স্ট্রিং, STARTএবং ENDভিত্তিক 0 তা সূচকের হয়। যদি PROPERTIESশূন্য থাকে তবে ওবিজেইসিটি-র মনোনীত অংশ থেকে সমস্ত বৈশিষ্ট্য মুছে ফেলা হবে।

এলিসপ ম্যানুয়াল, নোড পরিবর্তনের বৈশিষ্ট্যগুলি দেখুন । সেখানে আপনি এটি দেখতে পাবেন, ক্রিয়াকলাপের অধীনে remove-text-properties(যা আপনি কাজটি করতেও ব্যবহার করতে পারেন):

নির্দিষ্ট পাঠ্য থেকে সমস্ত পাঠ্য বৈশিষ্ট্য অপসারণ করতে , নতুন সম্পত্তি তালিকার জন্য ব্যবহার করুন set-text-propertiesএবং নির্দিষ্ট করুন nil


@ ড্যান যেমন উল্লেখ করেছেন, আপনি এটি ব্যবহার করতে পারেন substring-no-propertiesতবে সচেতন থাকুন যে এটি একটি নতুন স্ট্রিং ফেরত দেয়। এটি আপনি যে সত্যিকারের স্ট্রিং অবজেক্টটি দিয়েছিলেন তা সংশোধন করে না। উভয়ই remove-text-propertiesএবং set-text-propertiesআপনি যে স্ট্রিংটি পাস করেন তা পরিবর্তন করুন।

উদাহরণ স্বরূপ:

(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(set-text-properties 0 (length foo) nil foo)

উভয় fooএবং barএখন ঠিক আছে "foo", কোনও সম্পত্তি নেই।

কিন্তু:

(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(setq foo (substring-no-properties foo))

এখন fooকোন সম্পত্তি আছে কিন্তু barএখনও আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.