script0010


script0010
名前だけを取得するサンプル
参考:http://canal22.org/gyaku/copy/

ダウンロードする

タグ

2012年6月6日 | コメントは受け付けていません。 |

カテゴリー:ツール

COPY

COPY関数

文字列の指定箇所をコピーする
戻値 = COPY(文字列, 開始位置, [コピー文字数])
バイト処理の場合はCOPYB関数を使用

引数

文字列・・・コピー元の文字列
開始位置・・・コピー開始位置(1から)
コピー文字数・・・コピーする文字数(省略時は最後の文字まで)

戻値

結果の文字列


先頭から5文字目以降を抜き出す

文字列の先頭5文字目以降をCOPY関数で抽出します

STR = "(不要)ここから必要な文字列が始まります"
STR = COPY(STR,5)
MSGBOX(STR)

最後の2文字だけを抽出する

2つ目の引数に数字を入力することで
コピーする文字の開始位置を指定できます。
ここでは、最後尾から文字列を抽出する方法を見てみましょう。
ポイントは全体の文字数を事前に把握しておき、その数から指定文字数を調整するところです。
スクリプトは以下のようになります。

この投稿の続きを読む »

タグ

2012年4月22日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

部分的にダブルクォーテーションで括られたCSVファイルを整形したい

部分的にダブルクォーテーションで括られたCSVファイルを整形したい。
具体的には、
aaa,bbb,”ccc,ccc”,ddd,”eee,eee”

aaa,bbb,ccc ccc,ddd,eee eee
のようにしたいです。
アフィリエイトサイトのデータをCSVで落としてくると、

まれにこういった形式になっていることがありますね。

せっかくCSVからHPを作成するシステムを作ったのに、
ダブルクォーテーションに括られているパターンを想定していなかったため、
データがうまくDBに取り込めなかったり、エラーが発生してしまうことがあります。
そして、結局CSVを取り込みやすい形に直すために手間取られてしまう・・・。

そんな状況もUWSCで解決できます。

前提として、UWSCの特殊文字についておさえておきましょう。

< #CR>
改行コードを表す
< #DBL>
ダブルコーテイションを表す
< #TAB>
タブを表す

今回は、カンマとダブルコォーテーションの関係に注目します。
質問のCSVパターンは必ず「,”」で始まり「”,」で括られます。

つまり、「,”」と「”,」に挟まれた文字列を取得し、
その文字列内のカンマ(,)をスペースに置換する作業を繰り返せば良いわけです。

その際に注意しないといけないのは、
ダブルクォーテーションで括られる文字列は、
1行の間に必ずしも1回ではないということです。
無い場合もあるし、複数回ある場合も考えられます。

そこで、IF文WHILE文を使って対応できるようにします。
これらを踏まえて作成した関数は以下の通りです。

////////////////////////////////
//不要なカンマをスペースに変更する関数
//STR:文字列
////////////////////////////////

FUNCTION CANMA(STR)
	CNT = 1
	IFB POS(",<#DBL>",STR)>0
		WHILE POS(",<#DBL>",STR,CNT)

			BFO = POS(",<#DBL>",STR,CNT)
			AFT = POS("<#DBL>,",STR,CNT)
			TGT = COPY(STR,BFO+2,AFT-BFO-2)
			STR = REPLACE(STR, TGT,REPLACE(TGT,","," "))
			CNT = CNT + 1
		WEND
	ENDIF

	RESULT =STR
FEND

解説

CNTは括られた文字列が何個目かを認識します。
最初のIF文の条件で「,”」を検索します。
これにより、括られた文字列のあり無しを判断します。

次のWHILEである限り置換作業を行う命令をします。
その後は一般的な置換作業となります。
TGTを求めるために「+2」「-2」をしているのは、
カンマとダブルクォーテーションの文字数を指しています。

ナカヤマン自身も使っている、CSV置換の構文は以下の通りです。↓↓

CSV整形スクリプト・サンプル:列の削除とカンマ整形とUTF8化

この投稿の続きを読む »

タグ

2012年4月4日 | コメントは受け付けていません。 |

カテゴリー:Q&A

文字列のコピー

文字列の一部をコピーする関数です

COPY(文字列,開始位置,コピーする文字数)

文字列
対象となる文字列
開始位置
コピーの開始位置を先頭からの文字数で指定
コピーする文字数
何文字目までコピーするかを指定

れによって、文字列の任意の部分を取得できます。
※ バイト処理の場合は COPYB です。
また、POS関数LENGTH関数と連動させて、利用されることが多いです。
EXCEL関数を多用される方には、利用シーンが沢山見つかるでしょう。

名前だけを取得するサンプル
//常に姓と名の間にスペースがある前提
mojiretu = "山田 まりお"
STR = COPY(mojiretu,POS(" ",mojiretu)+1,LENGTH(mojiretu))
PRINT STR

タグ

2012年3月18日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

ペーストする文章を管理したい

ペーストする文章を管理したい
いつも決まった文をペーストしたい場面はどんな業務でもありますね。

でも、そのためにテキストファイルに文章を保存するのは
作成するのも、管理するのも大変です。
Excelに保存する手もありますが、セル内に改行を施すと、
ダブルクォテーション(“)が入ったりと厄介です。
じゃあ、コピー&ペーストするためのソフトウェアでもインストールするかというと
そこまででもない、探すのが大変だ、等々悩みの種も尽きません。


そこでUWSCの基本機能だけを使って簡単な文章管理スクリプトを作ってみましょう。

SELECT SLCTBOX(SLCT_BTN,0,"どの言葉の挨拶を返しますか","日本語","英語","フランス語","スペイン語","ドイツ語")
CASE SLCT_1
 STRING = "こんにちは"
CASE SLCT_2
 STRING = "Hello"
CASE SLCT_3
 STRING = "Bonjour"
CASE SLCT_4
 STRING = "Buenos dias"
CASE SLCT_5
 STRING = "Guten Tag"
DEFAULT
 STRING = "無し"
SELEND
SENDSTR(0,STRING)
MSGBOX("「" + STRING + "」がクリップボードに送信されました。")

単文を返すだけの簡単なスクリプトです。
しかし、数パターンだけしかないのならばこれで十分です。
STRINGの文字列には改行(“< #CR>“)も含められるので長文にも使用できます。

では、次に応用バージョンとして、
その場で入力した文字を埋め込んでクリップボードに送るスクリプトを考えてみましょう。

先ほどの各国語の挨拶のあとに、自分の名前が出るようにしてみます。
ただし、日本語には日本語の名前、それ以外の言葉ではアルファベットで出るようにして下さい。

つまり、入力が2つあるということです。

こんな感じになります。

この投稿の続きを読む »

タグ

2012年3月3日 | コメントは受け付けていません。 |

カテゴリー:Q&A

このページの先頭へ