-3

平日の 1 つ (月曜日、火曜日など) を含む出力文字列があります。

例えば、

"Some tex may appear before week day, Monday, will only be one occurrence of the weekday"

文字列から曜日を取得するにはどうすればよいですか?

一連の IF ステートメントを使用して、文字列に曜日が含まれているかどうかを確認できますが、もっと簡潔な方法があるかどうか知りたいですか?

4

5 に答える 5

3

これにより、曜日を見つける正規表現が作成されます。

var pattern = string.Format("({0})", string.Join("|", Enum.GetValues(typeof (DayOfWeek)).OfType<DayOfWeek>()));

var match = Regex.Match("some text here, Thursday maybe text here", pattern, RegexOptions.IgnoreCase);

Assert.AreEqual("Thursday", match.Value);
于 2012-10-05T19:30:48.473 に答える
0
int intCounter = 0;
string strWeekName = "";
string strContent = "Some text wednesday";
strContent = strContent.ToUpper;
while (intCounter < 7) {
  if (strContent.Contains(DateAndTime.WeekdayName(intCounter).ToUpper())) {
      strWeekName = DateAndTime.WeekdayName(intCounter);
      break; 
  }
  intCounter++; 
}

MsgBox "Weekday " + strWeekName;
于 2012-10-05T19:36:55.550 に答える
0

その日のインデックスを探して、そこから引き出すようなことをします。何かのようなもの:

int first = str.IndexOf("Thursday");
int last = str.LastIndexOf("Thursday");
string day = str.Substring(first, last);

コードは 100% 正しいとは限りませんが、似たようなものは機能するはずです。また、複数の日がある場合は、明らかにこれを毎日行う必要があります。

于 2012-10-05T19:29:14.277 に答える
0

文字列に存在するかどうかを確認するには

string text = "some text here, Thursday maybe text here";

if (text.Contains("thursday")) // Make text to lower case before checking
{
    ...
}

削除するには

text = text.Replace("thursday", ""); // Regex would be better to make it case-insensitive

これをすべての曜日で行います。

于 2012-10-05T19:29:16.337 に答える
0

ケースが考慮されず、1 つのインスタンスのみが発生すると仮定します。

string found = "";

string myString = "some text here, Thursday maybe text here";

foreach (string str in myString.Split())

    foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)))

        if(day.ToString() == str) found = str;
于 2012-10-05T19:41:50.210 に答える