2

私はVisual Studio 11.0を使用しており、.Net Webプログラミングでは、TextBox1から入力された文字列をTitleCase、sentenceCase、UpperCase、およびRadioButtonList1から選択して小文字に変換し、結果をLabel1.Textに表示したい.しかし、私は自分の言葉が欲しくない変換される引用符で囲まれています。例 「ASP.NET」、「Ph.D」、「xyz」。タイトルの大文字、小文字、大文字のコーディングを行いましたが、「quites」が来るたびにこのコードを無視/スキップまたはフィルター処理したいと考えています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;

 public partial class _Default : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {

  }
  private string ConvertToTitleCase(string val)
  {
  string returnString = string.Empty;

System.Globalization.CultureInfo info = System.Threading.Thread.CurrentThread.CurrentCulture;

TextInfo textInfo = info.TextInfo;

returnString = textInfo.ToTitleCase(val);

return returnString;
}
protected void Button1_Click(object sender, EventArgs e)
{
if (RadioButtonList1.SelectedValue == "a")
    {
Label1.Text = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(TextBox1.Text);
Label1.Text = ConvertToTitleCase(TextBox1.Text);

TextBox1.Text.Equals(TextBox1.Text, StringComparison.CurrentCultureIgnoreCase);
    }
else if (RadioButtonList1.SelectedValue == "b")
    {
Label1.Text = "you have selected b";
    }
else if (RadioButtonList1.SelectedValue == "c")
    {
Label1.Text = TextBox1.Text.ToUpper();
    }
else
Label1.Text = TextBox1.Text.ToLower();

}

TitleCase、SentenceCase、UpperCase、LowerCase を無視するヒントまたはコードが必要です。文字列が「引用符」内にある場合。

例:

String TextBox1 = hellO これは「asp.net」です。あなたは「B.Tech」にいて、「HCT」にようこそ。

出力:

TitleCase: こんにちは、「asp.net」です。あなたは「B.Tech」にいて、「HCT」へようこそ。

SentenceCase: こんにちは、「asp.net」です。あなたは「B.Tech」にいて、「HCT」にようこそ。

大文字: こんにちは、これは "asp.net" です。あなたは「B.Tech」にいて、「HCT」にようこそ。

小文字: こんにちは、「asp.net」です。あなたは「B.Tech」にいます。「HCT」へようこそ。

4

2 に答える 2

1

ブール値を返す文字列を含むメソッドを使用することを検討します。文字列に引用符が含まれているかどうかを確認してから、引用符で文字列を分割し、必要なビットを変換して残りをそのままにしておくことができます。申し訳ありませんが、正しく理解できていることを願っています。

string のドキュメントが含まれています。 http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx 文字列分割のドキュメント。 http://msdn.microsoft.com/en-us/library/system.string.split.aspx

お役に立てれば。

あなたが投稿したそのクラスで遊んでいるだけで、以前にそのクラスを使用したことがありません。

using System;
using System.Globalization;
using System.Threading;

  public class FilterString{
    public static void Main(string[] args)
    {
      CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
      TextInfo textInfo = cultureInfo.TextInfo;

      string textBoxText = "tEsting To upPerCasE 'STAYCAPS'";
      string filterdTextForLabel = textInfo.ToTitleCase(textBoxText) ;
      Console.WriteLine(filterdTextForLabel);

   }
}   

一重引用符を使用すると、希望どおりの結果が返されるようです。

出力: 大文字の 'STAYCAPS' へのテスト

しかし、私が考えていたのは、変換を行う前に何らかのフィルタリングを行ってから、テキスト入力の変数を割り当ててから、引用符で文字列を分割し、中央部分にあるものはすべて、残りの部分をそのままにして、ケースにタイトルを付けることができるということです。うまくいかない場合はお知らせください。より詳細な回答をいたします。:D

于 2013-03-28T00:14:00.750 に答える
0
private delegate string ConvertFunc(string input);

private string ModifyString(string input, ConvertFunc conversion)
{
    MatchCollection matches = Regex.Matches(input, "\".*?\"");
    int lastPos = 0;
    StringBuilder stringBuilder = new StringBuilder(input.Length);
    foreach (Match match in matches)
    {
        int currentPos = match.Index;
        string toConvert = input.Substring(lastPos, currentPos - lastPos);
        string converted = conversion(toConvert);
        stringBuilder.Append(converted);
        stringBuilder.Append(match.Value);
        lastPos = currentPos + match.Length;
    }

    if (lastPos < input.Length)
    {
        stringBuilder.Append(conversion(input.Substring(lastPos)));
    }

    return stringBuilder.ToString();
}

private string ToUpper(string toConvert)
{
    return toConvert.ToLower();
}

次に、コードから ModifyString メソッドを呼び出します。

string modifiedString = ModifyString("This can be converted \"This cannot be converted\"", ToUpper);
于 2013-03-29T09:58:01.747 に答える