OSDN Git Service

Wikipedia翻訳支援ツール Ver1.01時点のソース
[wptscs/wpts.git] / Wptscs / Utilities / StringUtils.cs
1 // ================================================================================================\r
2 // <summary>\r
3 //      文字列処理に関するユーティリティクラスソース。</summary>\r
4 //\r
5 // <copyright file="StringUtils.cs" company="honeplusのメモ帳">\r
6 //      Copyright (C) 2010 Honeplus. All rights reserved.</copyright>\r
7 // <author>\r
8 //      Honeplus</author>\r
9 // ================================================================================================\r
10 \r
11 namespace Honememo.Utilities\r
12 {\r
13     using System;\r
14 \r
15     /// <summary>\r
16     /// 文字列処理に関するユーティリティクラスです。\r
17     /// </summary>\r
18     /// <remarks>一部メソッドは、Apache Commons Lang の StringUtils やJava標準の String を参考にしています。</remarks>\r
19     public static class StringUtils\r
20     {\r
21         #region 初期化メソッド\r
22 \r
23         /// <summary>\r
24         /// 渡された文字列をチェックし、<c>null</c>だった場合には空の文字列を返します。\r
25         /// それ以外の場合には渡された文字列を返します。\r
26         /// </summary>\r
27         /// <param name="str">チェックを行う対象となる文字列。</param>\r
28         /// <returns>渡された文字列、<c>null</c>の場合には空の文字列。</returns>\r
29         public static string DefaultString(string str)\r
30         {\r
31             return StringUtils.DefaultString(str, String.Empty);\r
32         }\r
33 \r
34         /// <summary>\r
35         /// 渡された文字列をチェックし、<c>null</c>だった場合には指定されたデフォルトの文字列を返します。\r
36         /// それ以外の場合には渡された文字列を返します。\r
37         /// </summary>\r
38         /// <param name="str">チェックを行う対象となる文字列。</param>\r
39         /// <param name="defaultString">渡された文字列が<c>null</c>の場合に返されるデフォルトの文字列。</param>\r
40         /// <returns>渡された文字列、<c>null</c>の場合にはデフォルトの文字列。</returns>\r
41         public static string DefaultString(string str, string defaultString)\r
42         {\r
43             if (str == null)\r
44             {\r
45                 return defaultString;\r
46             }\r
47 \r
48             return str;\r
49         }\r
50 \r
51         #endregion\r
52 \r
53         #region 文字列チェック\r
54 \r
55         /// <summary>\r
56         /// この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。\r
57         /// </summary>\r
58         /// <param name="str">チェックを行う対象となる文字列。</param>\r
59         /// <param name="prefix">接頭辞。</param>\r
60         /// <param name="toffset">この文字列の比較を開始する位置。</param>\r
61         /// <returns>始まる場合<c>true</c>。<c>toffset</c>が負の値の場合、<c>str</c>の長さより大きい場合<c>false</c>。それ以外で<c>prefix</c>が空の場合は<c>true</c>。</returns>\r
62         /// <remarks>引数の<c>null</c>は許容、<c>str</c>のみまたは<c>prefix</c>のみ<c>null</c>は<c>false</c>、<c>prefix</c>も<c>null</c>は<c>true</c>を返す。</remarks>\r
63         public static bool StartsWith(string str, string prefix, int toffset)\r
64         {\r
65             // nullチェック\r
66             if (str == null)\r
67             {\r
68                 return prefix == null;\r
69             }\r
70             else if (prefix == null)\r
71             {\r
72                 return false;\r
73             }\r
74 \r
75             // 範囲チェック\r
76             if (toffset < 0 || toffset >= str.Length)\r
77             {\r
78                 return false;\r
79             }\r
80 \r
81             // 長さチェック\r
82             if (prefix.Length == 0)\r
83             {\r
84                 return true;\r
85             }\r
86 \r
87             // substringしてしまうと遅いので、先頭1文字だけは自前でチェック\r
88             if (str[toffset] != prefix[0])\r
89             {\r
90                 return false;\r
91             }\r
92 \r
93             // 後は普通のStartWithで処理\r
94             return str.Substring(toffset).StartsWith(prefix);\r
95         }\r
96         \r
97         #endregion\r
98     }\r
99 }\r