アカウント名:
パスワード:
PowerShell (with C#) でINIファイルの読み書き [qiita.com]
しかし、Powershell連想配列のどの辺りで苦戦したの?
# コメントと空行を除外する if($line -match "^$|^\s*"){ continue }
ちょっとヘンですね。まず、コメントの内容と違い、空行は削除されますが、コメントは削除されません。通常、iniファイルのコメントは、「;」から行末までです。
また、何かの書き間違いかと思いますが、これだと、すべての行が無視されてしまいますね。正規表現で「^\s*」は、どんな行にもマッチしてしまいますので。普通に書けば、
# コメントを削除する $line = $line -replace '\s*;.*$','' # 空行および空白のみの行を無視 if($line -match '^\s*$'){ continue }
あたりですかね。
# 連想配列に
とりあえず、連想配列の方はscriptスコープで配列宣言して代入したら、問題なく動きました。
ああ、そういうことか。なら、関数の出力として連想配列を返せばいいんじゃない?あるいは、連想配列を引数に取って、それに格納するとか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
たいていググった方が早い (スコア:1)
PowerShell (with C#) でINIファイルの読み書き [qiita.com]
しかし、Powershell連想配列のどの辺りで苦戦したの?
Re: (スコア:1)
宣言した配列に挿入するとエラーになるため、各設定項目は1変数1項目にして切り抜けました。。。
function read_ini($filename)
{
$lines = get-content $filename
foreach($line in $lines){
# コメントと空行を除外する
if($line -match "^$|^\s*"){ continue }
# =を区切り文字として行を分割
$param = $line.split("=",2)
# 連想配列に代
Re: (スコア:1)
ちょっとヘンですね。
まず、コメントの内容と違い、空行は削除されますが、コメントは削除されません。
通常、iniファイルのコメントは、「;」から行末までです。
また、何かの書き間違いかと思いますが、これだと、すべての行が無視されてしまいますね。
正規表現で「^\s*」は、どんな行にもマッチしてしまいますので。
普通に書けば、
あたりですかね。
Re: (スコア:1)
指摘の通り、このままでは全行にマッチしてしまうので使い物になりません。
とりあえず、連想配列の方はscriptスコープで配列宣言して代入したら、問題なく動きました。
# 各キーワードについては、代入前にtrim掛けているのでご心配なく。
# match演算子使ったコメント削除は非常に参考になりました。
# どうもです。
Re:たいていググった方が早い (スコア:1)
とりあえず、連想配列の方はscriptスコープで配列宣言して代入したら、問題なく動きました。
ああ、そういうことか。
なら、関数の出力として連想配列を返せばいいんじゃない?
あるいは、連想配列を引数に取って、それに格納するとか。
Re:たいていググった方が早い (スコア:1)