如何删除文本框中的小写字母?

| 我正在尝试删除ѭ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
    
string Code = Regex.Replace(txtDesc.text, \"[a-z]\", \"\");
    
这不是完美的方法,但应该可以(并通过BCBS测试):
private static string AlphaCode(String Input)
{
    List<String> capLetter = new List<String>();
    foreach (Char c in Input)
    {
        if (char.IsLetter(c))
        {
            String letter = c.ToString();
            if (letter == letter.ToUpper()) { capLetter.Add(letter); }
        }
    }
    return String.Join(String.Empty, capLetter.ToArray());
}
并且此版本将处理奇怪的输入方案(确保每个单词的第一个字母都大写)。
private static string AlphaCode(String Input)
{
    String capCase = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Input.ToString().ToLower());

    List<String> capLetter = new List<String>();
    foreach (Char c in capCase)
    {
        if (char.IsLetter(c))
        {
            String letter = c.ToString();
            if (letter == letter.ToUpper()) { capLetter.Add(letter); }
        }
    }
    return String.Join(String.Empty, capLetter.ToArray());
}
    

要回复问题请先登录注册