1 // ================================================================================================
\r
3 // 文字列処理に関するユーティリティクラスソース。</summary>
\r
5 // <copyright file="StringUtils.cs" company="honeplusのメモ帳">
\r
6 // Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
\r
9 // ================================================================================================
\r
11 namespace Honememo.Utilities
\r
16 /// 文字列処理に関するユーティリティクラスです。
\r
18 /// <remarks>一部メソッドは、Apache Commons Lang の StringUtils やJava標準の String を参考にしています。</remarks>
\r
19 public static class StringUtils
\r
24 /// 渡された文字列をチェックし、<c>null</c>だった場合には空の文字列を返します。
\r
25 /// それ以外の場合には渡された文字列を返します。
\r
27 /// <param name="str">チェックを行う対象となる文字列。</param>
\r
28 /// <returns>渡された文字列、<c>null</c>の場合には空の文字列。</returns>
\r
29 public static string DefaultString(string str)
\r
31 return StringUtils.DefaultString(str, String.Empty);
\r
35 /// 渡された文字列をチェックし、<c>null</c>だった場合には指定されたデフォルトの文字列を返します。
\r
36 /// それ以外の場合には渡された文字列を返します。
\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
45 return defaultString;
\r
56 /// この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。
\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
68 return prefix == null;
\r
70 else if (prefix == null)
\r
76 if (toffset < 0 || toffset >= str.Length)
\r
82 if (prefix.Length == 0)
\r
87 // substringしてしまうと遅いので、先頭1文字だけは自前でチェック
\r
88 if (str[toffset] != prefix[0])
\r
93 // 後は普通のStartWithで処理
\r
94 return str.Substring(toffset).StartsWith(prefix);
\r