/ / मैं स्ट्रिंग में एक विशेष तत्व कैसे जोड़ूं - स्कैला

मैं स्ट्रिंग में एक विशेष तत्व कैसे जोड़ूं - स्कैला

मैं यह पता लगाने में समस्या का सामना कर रहा हूं कि स्कैला का उपयोग करके किसी निर्दिष्ट स्थान पर एक तत्व को कैसे गिराया जा सकता है।

मैं कैसे स्लैला का उपयोग करके स्ट्रिंग में एक निर्दिष्ट स्थान पर एक चरित्र को गिराता हूं और यह भी कि मैं स्केला में स्ट्रिंग में एक निर्दिष्ट स्थान पर एक चरित्र कैसे जोड़ सकता हूं?

उत्तर:

उत्तर № 1 के लिए 1

का उपयोग करते हुए patch @BenReich द्वारा संभवतः इसके लिए सबसे मुहावरेदार और साफ-सुथरा तरीका है; उदाहरण के लिए एक और तरीका भी शामिल है take तथा drop के एक अनुक्रम के रूप में एक स्ट्रिंग पर Char, इस तरह,

val s = ("a" to "e").mkString
s: String = abcde

scala> s.take(2) ++ s.drop(3)  // remove third char
res0: String = abde

scala> s.take(2) ++ "CCC" ++ s.drop(3)  // replace third char with a string
res1: String = abCCCde

scala> s.take(2) ++ s.drop(4)  // remove from third to fourth chars
res2: String = abe

ध्यान दें कि यह बड़े तारों के लिए सबसे कुशल दृष्टिकोण नहीं है।


जवाब के लिए 3 № 2

इसमें से अधिकांश के साथ किया जा सकता है patch तरीका:

val x = "abcdefgh"
//Replace 1 element starting at the 4th position with "" (thereby eliminating the fourth element)
x.patch(4, "", 1) //"abcdfgh"

//Replace 0 elements starting at the 4th position with "A" (thereby adding an element after the fourth element)
x.patch(4, "A", 0) //"abcdAefgh"

विधि पर परिभाषित किया गया है GenSeqLike, जो कि उच्च पदानुक्रम का उच्च स्तर है, इसलिए आप उपयोग कर सकते हैं patch के अलावा अन्य प्रकार पर String:

 List(1, 2, 3, 4, 5, 6, 7).patch(4, Seq(), 1) //List(1, 2, 3, 4, 6, 7)

के दस्तावेज पढ़ें patch यहाँ.

आप भी समृद्ध कर सकते हैं GenSeqLike इस प्रकार की विधि अधिक आसानी से उपलब्ध करने के लिए:

import scala.collection.GenSeqLike
implicit class RichGenSeqLike[T, Repr <% GenSeqLike[T, Repr]](val seq: Repr) {
import scala.collection.generic.CanBuildFrom
def dropAt[That](n: Int)(implicit bf: CanBuildFrom[Repr, T, That]): That = seq.patch(n, Seq.empty[T], 1)
def addAt[That](n: Int)(ts: T*)(implicit bf: CanBuildFrom[Repr, T, That]): That = seq.patch(n, ts, 0)
}

और फिर आप कर सकते हैं:

List(1, 2, 3).dropAt(1) //List(1, 3)
"abc".dropAt(1) //"ac"

List(1, 2, 3).addAt(1)(4) //List(1, 4, 2, 3)
List(1, 2, 3).addAt(1)(4, 5, 6) //List(1, 4, 5, 6, 2, 3)
"abc".addAt(1)("A") //aAbc
"abc".addAt(1)("A", "B") //aABbc
"abc".addAt(1)("ABC":_*) //aABCbc

बेशक, यदि आप इसे अपने मानक पुस्तकालय में जोड़ रहे हैं, तो आप कुछ सीमा जाँच करने पर विचार कर सकते हैं।


उत्तर № 3 के लिए 1

आप स्ट्रिंग को दो भागों में तोड़ने के लिए "उप-स्ट्रिंग" का उपयोग कर सकते हैं और फिर आवश्यक वर्ण जोड़ने के बाद, उन्हें फिर से जोड़ सकते हैं।