hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
Tab文字考慮strlen - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
hsp3.png

Tab文字考慮strlen

Tab文字を指定した数の幅で展開した文字数をカウントします。

モジュール

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 
 
 
 
 
 
 
 
 
 
-
|
|
-
|
|
|
-
|
|
!
|
-
|
!
 
 
 
#module
//Tstrlen(p1,p2)
//	p1=文字列方の変数名
//	p2=Tab文字の幅
//	Tabの幅を考慮した文字数が返ります
#defcfunc tstrlen str tbuf, int tsize
buf = tbuf+"\\0" : i = 0 : t=1
 
repeat
    if peek(buf,cnt) == '\\0' : break
    if peek(buf,cnt) == '\t'{
        tcnt = cnt
        repeat 
            if (tsize -(i \ tsize)) != tsize{
                i = i+(tsize -(i \ tsize))
                 
                break
            }else{
                i + tsize
                break
            }
        loop
    }else{
        i++
    }
loop
return i
#global

サンプル

Everything is expanded.Everything is shortened.
  1
  2
 
 
a ="AB\tCDEF\t"
mes tstrlen(a,4)

コメント

  • 安定してるかどうか微妙ですけど、一応載せてみました。 -- 猫太? 2007-01-21 (日) 20:53:58
  • "\\0"を連結しているのは無駄ですので、こうとかどうですか?でもこういうのがゴロゴロしているといろいろ使えますよね^^(よく読むと未使用変数とかが...) -- kz3
    +  ...
  • 2バイト文字の2バイト目が'\t'に等しい文字があると誤カウントしてしまうのではないでしょうか(そういう2バイト文字があるかどうか不明ですが…)。String/改行を参考に手を加えてみました↓。 -- eller 2007-01-21 (日) 22:01:31
  • おぉ!早速指摘、修正どうもです [bsmile] 自作エディタのTab文字で使ってるので、皆さんの修正で安心しました。 -- 猫太? 2007-01-21 (日) 22:16:58
  • \tは0x09なのでSJISなら考慮の必要はないですね。 -- kz3 2007-01-21 (日) 22:18:55
  • あら、チェックしてみましたけどkz3さんとellerさんのやつでAB\tCDEF\tを数えると9って返ってきますね。これは正常なのですか? -- 猫太? 2007-01-21 (日) 22:28:03
  • 猫太さん指摘ありがとうございます^^; -- kz3 2007-01-21 (日) 23:41:42
  • 猫太さんkz3さん、ありがとうございます。調べもしないでごめんなさい。m(_ _)m自分のは不要となるので削除しました。 -- eller 2007-01-22 (月) 07:20:00
    URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2007-04-08 (日) 02:35:04 (2436d)