নীচের মতো একাধিক লাইনের উপরে আমি কীভাবে একটি স্ট্রিং বিভক্ত করতে পারি?
var text:String = "This is some text
over multiple lines"
নীচের মতো একাধিক লাইনের উপরে আমি কীভাবে একটি স্ট্রিং বিভক্ত করতে পারি?
var text:String = "This is some text
over multiple lines"
উত্তর:
সুইফট 4 -এ মাল্টি-লাইন স্ট্রিং আক্ষরিক জন্য সমর্থন অন্তর্ভুক্ত । নিউলাইনগুলি ছাড়াও এগুলিতে অবিচ্ছিন্ন উদ্ধৃতিও থাকতে পারে।
var text = """
This is some text
over multiple lines
"""
সুইফটের পুরানো সংস্করণগুলি আপনাকে একাধিক লাইনের উপরে একক আক্ষরিক থাকতে দেয় না তবে আপনি একাধিক লাইনের উপরে একসাথে আক্ষরিক যোগ করতে পারেন:
var text = "This is some text\n"
+ "over multiple lines\n"
\n
চরিত্রটি ম্যানুয়ালি যোগ করতে হবে । উদাহরণস্বরূপ, REPL এ: println("foo\n" + "bar")
প্রিন্ট foo
এবং bar
পৃথক লাইনে।
কম্পাইলার হ্যাং বাগটি এড়িয়ে গিয়ে মাল্টলাইন স্ট্রিংগুলি অর্জন করতে আমি স্ট্রিংয়ের একটি এক্সটেনশন ব্যবহার করেছি। এটি আপনাকে পৃথককারী নির্দিষ্ট করার অনুমতি দেয় যাতে আপনি পাইথনের যোগ ফাংশনটির মতো এটি কিছুটা ব্যবহার করতে পারেন
extension String {
init(sep:String, _ lines:String...){
self = ""
for (idx, item) in lines.enumerated() {
self += "\(item)"
if idx < lines.count-1 {
self += sep
}
}
}
init(_ lines:String...){
self = ""
for (idx, item) in lines.enumerated() {
self += "\(item)"
if idx < lines.count-1 {
self += "\n"
}
}
}
}
print(
String(
"Hello",
"World!"
)
)
"Hello
World!"
print(
String(sep:", ",
"Hello",
"World!"
)
)
"Hello, World!"
enumerate(lines)
জন্য এখনlines.enumerate()
joinWithSeparator
মূলত একই জিনিসটি করেন না ? ["Hello", "World!"].joinWithSeparator(", ")
এটি সুইফট সম্পর্কে প্রথম হতাশাব্যঞ্জক যা আমি লক্ষ্য করেছি। প্রায় সমস্ত স্ক্রিপ্টিং ভাষা একাধিক-লাইনের স্ট্রিংয়ের অনুমতি দেয়।
সি ++ 11 টি কাঁচা স্ট্রিং লিটারেল যুক্ত করেছে যা আপনাকে আপনার নিজের টার্মিনেটর সংজ্ঞায়িত করতে দেয়
সি # এর মাল্টি-লাইন স্ট্রিংয়ের জন্য @ লিটারেলগুলি রয়েছে ।
এমনকি সরল সি এবং এইভাবে পুরানো ধাঁচের সি ++ এবং উদ্দেশ্য-সি কেবল একাধিক লিটারাল সংলগ্ন করে কনকেন্টেশন করার অনুমতি দেয়, সুতরাং উদ্ধৃতিগুলি ভেঙে যায়। হোয়াইটস্পেস এমনটি করার সময় গণনা করে না যাতে আপনি এগুলিকে বিভিন্ন লাইনে লাগাতে পারেন (তবে আপনার নিজের নিজস্ব নতুন লাইন যুক্ত করা দরকার):
const char* text = "This is some text\n"
"over multiple lines";
যেহেতু সুইফ্ট জানে না যে আপনি আপনার পাঠ্যকে একাধিক লাইনের উপরে রেখেছেন, তাই আমি আমার সি নমুনার মতো একইভাবে সংযোজকের নমুনা ঠিক করতে হবে, স্পষ্টভাবে নিউলাইনটি উল্লেখ করে:
var text:String = "This is some text \n" +
"over multiple lines"
একাধিক-লাইনের স্ট্রিংগুলি সুইফট ৪.০ হিসাবে সম্ভব, তবে কিছু বিধি রয়েছে:
"""
।"""
তার নিজস্ব লাইনেও শুরু হওয়া উচিত।তা ছাড়া, আপনি যেতে ভাল! এখানে একটি উদাহরণ:
let longString = """
When you write a string that spans multiple
lines make sure you start its content on a
line all of its own, and end it with three
quotes also on a line of their own.
Multi-line strings also let you write "quote marks"
freely inside your strings, which is great!
"""
আরও তথ্যের জন্য সুইফট 4 এ নতুন কী দেখুন ।
+
লিটসো দ্বারা নির্দেশিত হিসাবে, একই অভিব্যক্তিতে অপারেটরটির বারবার ব্যবহার এক্সকোড বিটা ঝুলতে পারে (কেবলমাত্র এক্সকোড 6 বিটা 5 দিয়ে পরীক্ষা করা হয়েছে): এক্সকোড 6 বিটা সংকলন করছে না
আপাতত মাল্টলাইন স্ট্রিংগুলির বিকল্প হ'ল স্ট্রিংগুলির অ্যারে ব্যবহার করা এবং reduce
এটির সাথে +
:
var text = ["This is some text ",
"over multiple lines"].reduce("", +)
বা, যুক্তিযুক্তভাবে সহজ, ব্যবহার করে join
:
var text = "".join(["This is some text ",
"over multiple lines"])
সুইফট 4 মাল্টি লাইন স্ট্রিংকে আক্ষরিক সমর্থন দিয়ে এই সমস্যাটিকে সম্বোধন করেছে। স্ট্রিং আক্ষরিক শুরু করতে তিনটি ডাবল উদ্ধৃতি চিহ্ন ("" ") যোগ করুন এবং রিটার্ন কী টিপুন, কেবল কোনও ভেরিয়েবল, লাইন ব্রেক এবং ডাবল কোট দিয়ে স্ট্রিং লিখতে শুরু করার পরে চাপুন। যেমন আপনি নোটপ্যাড বা কোনও পাঠ্য সম্পাদককে লিখবেন। মাল্টলাইন লাইনের স্ট্রিং শেষ করতে আবার নতুন লাইনে ("" ") লিখুন।
উদাহরণ নীচে দেখুন
let multiLineStringLiteral = """
This is one of the best feature add in Swift 4
It let’s you write “Double Quotes” without any escaping
and new lines without need of “\n”
"""
print(multiLineStringLiteral)
সুইফট:
@ কনর সঠিক উত্তর, তবে আপনি যদি মুদ্রণ বিবৃতিতে লাইন যুক্ত করতে চান এবং যেগুলি \n
এবং / বা \r
, এগুলিকে এস্কেপ সিকোয়েন্সস বা পালিত অক্ষর বলা হয়, এটি এই বিষয়টিতে অ্যাপল ডকুমেন্টেশনের একটি লিঙ্ক। ।
উদাহরণ:
print("First line\nSecond Line\rThirdLine...")
@ কনর উত্তরে যুক্ত করা, এখানেও needs n হওয়া দরকার। এখানে সংশোধিত কোড দেওয়া হল:
var text:String = "This is some text \n" +
"over multiple lines"
নিম্নলিখিত উদাহরণটিতে এক্সকোড .2.২ বিটা হিসাবে সুইফট বাগের জন্য সহজ কর্মরূপ হিসাবে প্রথম বন্ধনী ব্যবহার করে একটি বহু-লাইন ধারাবাহিকতা চিত্রিত করা হয়েছে, যেখানে এটি অভিযোগ করে যে যুক্তিটি যুক্তিসঙ্গত পরিমাণে সমাধানের পক্ষে খুব জটিল এবং এটিকে ছোট ভাঙ্গার বিষয়টি বিবেচনা করার জন্য টুকরা:
.
.
.
return String(format:"\n" +
(" part1: %d\n" +
" part2: %d\n" +
" part3: \"%@\"\n" +
" part4: \"%@\"\n" +
" part5: \"%@\"\n" +
" part6: \"%@\"\n") +
(" part7: \"%@\"\n" +
" part8: \"%@\"\n" +
" part9: \"%@\"\n" +
" part10: \"%@\"\n" +
" part12: \"%@\"\n") +
" part13: %f\n" +
" part14: %f\n\n",
part1, part2, part3, part4, part5, part6, part7, part8,
part9, part10, part11, part12, part13, part14)
.
.
.
নমুনা
var yourString = "first line \n second line \n third line"
সেক্ষেত্রে, আপনি + অপারেটরটিকে উপযুক্ত খুঁজে পাবেন না
একটি পদ্ধতি হ'ল এইচটিএমএলকে লাইন ব্রেকের জন্য অন্তর্ভুক্ত করার জন্য লেবেল পাঠ্যকে অ্যাট্রিবিউটটেক্সটে সেট করা এবং স্ট্রিং ভেরিয়েবল আপডেট করা (<br />
) ।
উদাহরণ স্বরূপ:
var text:String = "This is some text<br />over multiple lines"
label.attributedText = text
আউটপুট:
This is some text
over multiple lines
আশাকরি এটা সাহায্য করবে!
String
টেক্সট) এর মান (পাঠ্য) নির্ধারণ করতে পারবেন না NSAttributedString?
।
লাইনগুলিতে পৃথক n অক্ষর দ্বারা একটি স্ট্রিং বিভক্ত করতে এখানে একটি কোড স্নিপেট রয়েছে:
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
override func loadView() {
let str = String(charsPerLine: 5, "Hello World!")
print(str) // "Hello\n Worl\nd!\n"
}
}
extension String {
init(charsPerLine:Int, _ str:String){
self = ""
var idx = 0
for char in str {
self += "\(char)"
idx = idx + 1
if idx == charsPerLine {
self += "\n"
idx = 0
}
}
}
}
আমি বেশ কয়েকটি উপায়ে চেষ্টা করেছি তবে এর থেকে আরও ভাল সমাধান পেয়েছি: কেবলমাত্র "টেক্সট ভিউ" উপাদানটি ব্যবহার করুন। এটি পাঠ্যটি স্বয়ংক্রিয়ভাবে একাধিক লাইন দেখায়! এখানে পাওয়া গেছে: ইউআইটিেক্সটফিল্ড একাধিক লাইন