QGISの別の列の文字列の一部に基づいて新しい列を作成する
Aug 24 2020
ゾーニング名("subzones"
UV036、UMTs2など)の列があり、代わりに一般ゾーン(UV036の代わりにUV、UMTs2の代わりにUMT ...)を使用して新しい列を作成したいと思います。同じ数の文字または同じ構造)。
私はフィールド計算機でこれをやろうとしました:
CASE
WHEN "c_zonage_b" LIKE 'UH%%%%' THEN 'UH'
WHEN "c_zonage_b" LIKE 'UE%%%%' THEN 'UE'
WHEN "c_zonage_b" LIKE 'N%%%%' THEN 'N'
ELSE ''
END
(フィールド計算機でこれをどの列に配置するかも指定します)。
%
可能なサブゾーンを考慮に入れるワイルドカードです(サブゾーンに数字または文字が含まれ、それらの数字が異なる場合がありますが、4を超えることはありません%%%%
。したがって)。
残念ながら、それは機能しません。
回答
3 ahmadhanb Aug 24 2020 at 22:26
同じ列からテキストを抽出する場合は、ユースケースを使用する必要はありません。フィールド計算機で次の式を使用して、次のように新しい列の大文字を抽出できます。

regexp_replace( "Name" ,'([A-Z]+)(.+)','\\1')
出力は次のようになります。

この式'([A-Z]+)'
は、文字列の最初の部分である大文字をキャプチャ'\\1'
し、最初のグループを選択します。
この式'(.+)'
は、文字列の残りの部分をキャプチャします。文字列の2番目の部分に別の列を入力する場合は、次の式を使用できます。
regexp_replace( "Name" ,'([A-Z]+)(.+)','\\2')
ただ、交換する\\1
と\\2
第2のグループをキャプチャします。
