如何解决如何删除文本框中的小写字母?
| 我正在尝试删除ѭ0上的小写字母。 例如,代表保险的简短字母代码(例如\'BCBS \'代表\'Blue Cross Blue Shield \'):txtDesc.text = \"Blue Cross Blue Shield\";
string Code = //This must be BCBS..
可能吗?请帮我。谢谢!
解决方法
好吧,您可以使用正则表达式删除所有不是大写字母A-Z的内容:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main( string[] args )
{
string input = \"Blue Cross Blue Shield 12356\";
Regex regex = new Regex(\"[^A-Z]\");
string output = regex.Replace(input,\"\");
Console.WriteLine(output);
}
}
请注意,这还将删除所有非ASCII字符。另一种正则表达式为:
Regex regex = new Regex(@\"[^\\p{Lu}]\");
...我认为这应该涵盖所有文化的大写字母。
,string Code = new String(txtDesc.text.Where(c => IsUpper(c)).ToArray());
,这是我的变体:
var input = \"Blue Cross Blue Shield 12356\";
var sb = new StringBuilder();
foreach (var ch in input) {
if (char.IsUpper(ch)) { // only keep uppercase
sb.Append(ch);
}
}
sb.ToString(); // \"BCBS\"
我通常喜欢使用正则表达式,但是我不知道如何在没有[A-Z]
的情况下选择\“仅大写\”,这会严重破坏英语字母以外的字符(甚至是其他拉丁字符!:-/)
快乐的编码。
但是请参阅Skeet先生关于正则表达式的答案;-)
,string Code = Regex.Replace(txtDesc.text,\"[a-z]\",\"\");
,我会在字典中将值映射到您的缩写:
Dictionary<string,string> valueMap = new Dictionary<string,string>();
valueMap.Add(\"Blue Cross Blue Shield\",\"BCBS\");
string Code = \"\";
if(valueMap.ContainsKey(txtDesc.Text))
Code = valueMap[txtDesc.Text];
else
// Handle
但是,如果您仍然想要提及的功能,请使用linq:
string newString = new string(txtDesc.Text.Where(c => char.IsUpper(c).ToArray());
,您可以尝试使用\'用星号替换小写字符'实现,但将\'* \'更改为\'\'(空白)
因此代码看起来像这样:
txtDesc.Text = \"Blue Cross Blue Shield\";
string TargetString = txt.Desc.Text;
string MainString = TargetString;
for (int i = 0; i < TargetString.Length; i++)
{
if (char.IsLower(TargetString[i]))
{
TargetString = TargetString.Replace( TargetString[ i ].ToString(),string.Empty );
}
}
Console.WriteLine(\"The string {0} has converted to {1}\",MainString,TargetString);
,没有正则表达式:
string input = \"Blue Cross Blue Shield\";
string output = new string(input.Where(Char.IsUpper).ToArray());
Response.Write(output);
,string caps = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";
string.Join(\"\",\"Blue Cross Blue Shield\".Select(c => caps.IndexOf(c) > -1 ? c.ToString() : \"\")
.ToArray());
,我认为规范不是要求全都匹配,而是要求匹配所有单词中的第一个字符。这将允许不一致的输入,但从长远来看仍然是可靠的。因此,建议使用以下代码。它对来自Regex
对象的每个Match
使用汇总,并将值附加到称为output
的字符串对象。
string input = \"Blue Cross BLUE shield 12356\";
Regex regex = new Regex(\"\\\\b\\\\w\");
string output = regex.Matches(input).Cast<Match>().Aggregate(\"\",(current,match) => current + match.Value);
Console.WriteLine(output.ToUpper()); // outputs BCBS1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。