আমি কীভাবে অ্যারে অবজেক্টকে পাওয়ারশেলে একটি স্ট্রিংয়ে রূপান্তর করব?


175

আমি কীভাবে অ্যারে অবজেক্টটিকে স্ট্রিংয়ে রূপান্তর করতে পারি?

আমি চেষ্টা করেছিলাম:

$a = "This", "Is", "a", "cat"
[system.String]::Join(" ", $a)

কোন ভাগ্য ছাড়া । পাওয়ারশেলের বিভিন্ন সম্ভাবনা কী কী?


5
আমার উত্তর দেখুন কিন্তু আপনার কোডটিও ঠিক কাজ করে। আপনি "ভাগ্যবিহীন" কেন বলছেন?
রোমান কুজমিন

4
দুঃখিত, হ্যাঁ, এটি কাজ করে বলে মনে হচ্ছে, আমি মনে করি এটি পরীক্ষা করার সময় আমি কিছু গণ্ডগোল পেয়েছি।
jrara

উত্তর:


294
$a = 'This', 'Is', 'a', 'cat'

ডাবল উদ্ধৃতি ব্যবহার করে (এবং allyচ্ছিকভাবে পৃথকটি ব্যবহার করুন $ofs)

# This Is a cat
"$a"

# This-Is-a-cat
$ofs = '-' # after this all casts work this way until $ofs changes!
"$a"

অপারেটর জয়েন ব্যবহার করে

# This-Is-a-cat
$a -join '-'

# ThisIsacat
-join $a

রূপান্তর ব্যবহার করে [string]

# This Is a cat
[string]$a

# This-Is-a-cat
$ofs = '-'
[string]$a

9
আন-ইনিশিয়েটেডের জন্য (আমার মতো) এখানে$ofs ডকুমেন্টেড রয়েছে
লিয়াম

13
স্ট্যাকওভারফ্লো ডকুমেন্টেশন বন্ধ হয়ে গেছে তাই লিয়ামের লিঙ্কটি মারা গেছে। এখানে আউটপুট ফিল্ড বিভাজকের
//

কেন এটি অফস বলা হয়? এটি দশক এবং দশক ধরে স্ট্যান্ডার্ড শেলের আইএফএস নামে বিবেচনা করে একটি অদ্ভুত নাম।
জোহান বুলি

1
@ জোহানবাউলé: কারণ আউটপুট ফিল্ড বিভাজক হিসাবে ইনপুট ফিল্ড বিভাজকের প্রথম চরিত্রটি ব্যবহার করা একটি বাজে হ্যাক - এবং বহু-চরিত্রের স্ট্রিং সহ ক্ষেত্রগুলি পৃথক করার অনুমতি দেয় না। (উদাহরণস্বরূপ আওকের এফএস এবং অফস ভেরিয়েবল রয়েছে)।
মার্টিন বোনার

@ মার্টিন বোনার: ধন্যবাদ, এটি এখন উপলব্ধিযোগ্য। আমি জানি না আমি কীভাবে এই গোলযোগ করেছি।
জোহান বুলি

36

আমি দেখেছি যে Out-Stringসেমিডলেট এ অ্যারে পাইপ করা খুব ভাল কাজ করে।

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

PS C:\> $a  | out-string

This
Is
a
cat

কোন পদ্ধতিটি ব্যবহার করা সবচেয়ে ভাল তা এটি আপনার শেষ লক্ষ্যের উপর নির্ভর করে।


4
এফওয়াইআই: স্রেফ $a$a | out-string
করানো

7
পুনঃটুইট করুন ($a | out-string).getType()= স্ট্রিং। $a.getType()= অবজেক্ট []। আপনি যদি স্ট্রিং (যেমন invoke-expressionউদাহরণস্বরূপ) প্রত্যাশা করে এমন পদ্ধতির পক্ষে যুক্তি হিসাবে using a ব্যবহার করে থাকেন তবে $a | out-stringতার সুস্পষ্ট সুবিধা রয়েছে।
রোজ

18
1> $a = "This", "Is", "a", "cat"

2> [system.String]::Join(" ", $a)

লাইন দুইটি হোস্টের জন্য অপারেশন করে এবং আউটপুটগুলি সম্পাদন করে, তবে $ এ পরিবর্তন করে না:

3> $a = [system.String]::Join(" ", $a)

4> $a

This Is a cat

5> $a.Count

1

10

একটি পাইপ থেকে

# This Is a cat
'This', 'Is', 'a', 'cat' | & {"$input"}

# This-Is-a-cat
'This', 'Is', 'a', 'cat' | & {$ofs='-';"$input"}

লেখা-হোস্ট

# This Is a cat
Write-Host 'This', 'Is', 'a', 'cat'

# This-Is-a-cat
Write-Host -Separator '-' 'This', 'Is', 'a', 'cat'

উদাহরণ


এটি আশ্চর্যজনক কৌশল। উদাহরণটি আর কাজ করে না, এবং এই উত্তরটি 5 বছরের পুরানো হলেও আমি আজ যা শিখেছি তা ব্যাখ্যা করার চেষ্টা করি। $ofsহয় Output Field Separatorপরিবর্তনশীল যা যখন একটি অ্যারের আউটপুট জন্য স্ট্রিং রূপান্তরিত হয় ব্যবহার করা হয়। এখানে এটি স্ক্রিপ্ট ব্লকে ইনপুটটির স্ট্রিং মান (পাইপ থেকে অ্যারে) সেট করা আছে যা কমান্ড দ্বারা সম্পাদিত হয় &। আমি এর $ofsআগে জানতাম না , পাশাপাশি &যুক্তি হিসাবে কোনও স্ক্রিপ্ট ব্লক গ্রহণ করেছিলাম
মার্টিন কনোপকা

3

আপনি এই জাতীয় ধরণ উল্লেখ করতে পারেন:

[string[]] $a = "This", "Is", "a", "cat"

প্রকারটি পরীক্ষা করা হচ্ছে:

$a.GetType()

নিশ্চিত করে:

    ইসপাবলিক ইসিরিয়াল নাম বেসটাইপ
    -------- -------- ---- --------
    ট্রু ট্রু স্ট্রিং [] সিস্টেম.আরে

আউটপুটিং $ এ:

পিএস সি: \> $ এ 
এই 
কি 
একটি 
বিড়াল

0
$a = "This", "Is", "a", "cat"

foreach ( $word in $a ) { $sent = "$sent $word" }
$sent = $sent.Substring(1)

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