OSDN Git Service

140文字を超えた場合の切り捨ての際にハッシュタグとURLっぽい文字列も考慮するように修正
authorsyo68k <syo68k@users.sourceforge.jp>
Thu, 7 Oct 2010 05:26:07 +0000 (05:26 +0000)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Feb 2012 14:15:47 +0000 (23:15 +0900)
git-svn-id: http://svn.sourceforge.jp/svnroot/tween/trunk@943 e39ad16e-3079-482e-bb30-4b4d378143b6

Tween/Tween.vb

index 83e5a55..61daa00 100644 (file)
@@ -1716,11 +1716,13 @@ Public Class TweenMain
 
         If isCutOff AndAlso args.status.status.Length > 140 Then
             args.status.status = args.status.status.Substring(0, 140)
-            Dim mc As Match = Regex.Match(args.status.status, "(@|@)[a-z0-9_/]+$", RegexOptions.IgnoreCase)
+            Dim AtId As String = "(@|@)[a-z0-9_/]+$"
+            Dim HashTag As String = "(^|[^0-9A-Z&\/\?]+)(#|#)([0-9A-Z_]*[A-Z_]+)$"
+            Dim Url As String = "https?:\/\/[a-z0-9!\*'\(\);:&=\+\$\/%#\[\]\-_\.,~?]+$" '簡易判定
+            Dim pattern As String = String.Format("({0})|({1})|({2})", AtId, HashTag, Url)
+            Dim mc As Match = Regex.Match(args.status.status, pattern, RegexOptions.IgnoreCase)
             If mc.Success Then
-                'MessageBox.Show(My.Resources.PostLengthOverMessage3 + Environment.NewLine + Environment.NewLine + args.status.status, "Abort", MessageBoxButtons.OK)
-                'Exit Sub
-                'さらに@IDと推測される文字列をカットする
+                'さらに@ID、ハッシュタグ、URLと推測される文字列をカットする
                 args.status.status = args.status.status.Substring(0, 140 - mc.Value.Length)
             End If
             If MessageBox.Show(args.status.status, "Post or Cancel?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Cancel Then Exit Sub