将字符串转换为TitleCase, SentenceCase, UpperCase和LowerCase,但如果单词在“&
本文关键字:如果 单词 LowerCase UpperCase 转换 字符串 TitleCase SentenceCase | 更新日期: 2023-09-27 18:06:06
我使用visual studio 11.0和。net web编程我想转换从TextBox1输入到TitleCase, sentenecase,大写和小写字母从RadioButtonList1选择,并在Label1显示结果的字符串。文本,但我不希望引号内的单词被转换。"ASP。. NET","Ph.D"answers"xyz"。我已经完成了标题大小写,大写和小写的编码,但我希望这个代码被忽略/跳过或过滤,无论"相当"来。
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,大写和小写的如果..我的字符串在引号里面
的例子:
String TextBox1 = hellO这是"asp.net"你在"B.Tech",欢迎来到"HCT"。
输出:titleccase: Hello This Is "asp.net"。你在"B.Tech",欢迎来到"HCT"。
句子:你好,这是"asp.net"。您在"B.Tech",欢迎来到"HCT"。
大写:HELLO这是"asp.net"。您在"B.Tech",欢迎来到"HCT"。
小写:hello这是"asp.net"。你在"B.Tech",欢迎来到"HCT"。
我会考虑使用string contains方法,它返回一个布尔值。你可以检查字符串是否包含引号,然后你可以在引号上分割字符串,转换你想要的部分,剩下的部分保持原样。我希望我的理解是正确的,如果没有,我道歉。
文档的字符串包含。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);
}
}
这个使用单引号,看起来它返回的结果像你想要的那样。
输出:Testing To大写'STAYCAPS'
但是我想的是你可以做一些过滤之前,你使转换为文本输入分配一个变量,然后分割引号上的字符串和任何在中间部分留下相同的其余你可以标题的情况。如果你不能让它工作,请告诉我,我会做出更深入的回应。: D
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);