我正在尝试查找字符串的大写部分,然后在盲文语言中插入两个代表Double Capital符号的字符。我这样做的目的是设计一个能够从普通文本翻译成盲文的翻译人员。 我举一个例子belo。 英文字符串:我的变量是IEnumerable类型的。 盲文:,我的变量的类型是,IE-numberable。 我也希望在IE数字破折号只打破有大写和小写的单词,但不能在标点符号,空格,数字或其他符号前。如何找到一个字符串的大写字符串?
非常感谢您的回答。
我正在尝试查找字符串的大写部分,然后在盲文语言中插入两个代表Double Capital符号的字符。我这样做的目的是设计一个能够从普通文本翻译成盲文的翻译人员。 我举一个例子belo。 英文字符串:我的变量是IEnumerable类型的。 盲文:,我的变量的类型是,IE-numberable。 我也希望在IE数字破折号只打破有大写和小写的单词,但不能在标点符号,空格,数字或其他符号前。如何找到一个字符串的大写字符串?
非常感谢您的回答。
我从来没有听说过“双重资本”的标志,所以我读了它here。从我所知道的情况来看,这应该适合你的需求。
您可以使用此找到两个或多个大写(大写)的任何序列在串拉丁文字母或连字符:
var matches = Regex.Matches(input, "[A-Z-]{2,}");
您可以使用此插入双首都的标志:
var result = Regex.Replace(input, "[A-Z-]{2,}", ",,$0");
例如:
var input = "this is a TEST";
var result = Regex.Replace(input, "[A-Z-]{2,}", ",,$0"); // this is a ,,TEST
您可以使用此手单,双帽itals:
var input = "McGRAW-HILL";
var result = Regex.Replace(input, "[A-Z-]([A-Z-]+)?",
m => (m.Groups[1].Success ? ",," : ",") + m.Value); // ,Mc,,GRAW-HILL
非常感谢您花时间写下这个答案。我非常感谢。我真的这样做。 – user2227354
@ user2227354很高兴为您提供帮助。这里有一个关于SO提问的小贴士:总是显示你所尝试过的内容,并解释它为什么不起作用(错误,结果不佳等)。对于询问正则表达式模式的问题,**是关键**,用于显示要匹配的输入字符串以及不想匹配的字符串,并且在正则表达式替换的情况下,请至少显示几个输入字符串与他们期望的产出。这将有助于您避免未来的选票投票和结束投票。 –
你可以用一个简单的正则表达式找到他们:
using System.Text.RegularExpressions;
// ..snip..
Regex r = new Regex("[A-Z]"); // This will capture only upper case characters
Match m = r.Match(input, 0);
System.Text.RegularExpressions.Match
类型的变量m
将包含捕获的集合。如果只有第一场比赛很重要,您可以直接查看其Index
属性。
现在你可以插入你在那个位置想要的字符,使用String.Insert
:
input = input.Insert(m.Index, doubleCapitalSign);
不知道这是否是你要什么?
var inputString = string.Empty; //Your input string here
var output = new StringBuilder();
foreach (var c in inputString.ToCharArray())
{
if (char.IsUpper(c))
{
output.AppendFormat("_{0}_", c);
}
else
{
output.Append(c);
}
}
穿过inputString
每个字符这将循环如果characater是上之前和之后(替换使用所需盲文字符)否则附加的字符输出插入_
。
这个代码可以解决你的problema
string x = "abcdEFghijkl";
string capitalized = string.Empty;
for (int i = 0; i < x.Length; i++)
{
if (x[i].ToString() == x[i].ToString().ToUpper())
capitalized += x[i];
}
您是否尝试过使用方法字符。IsUpper方法 http://msdn.microsoft.com/en-us/library/9s91f3by.aspx
这是一个使用该方法来解决类似的问题 Get the Index of Upper Case letter from a String
如果你只是想找到一个大写字母的第一个索引另一个相似的问题:
var firstUpperCharIndex = text // <-- a string
.Select((chr, index) => new { chr, index })
.FirstOrDefault(x => Char.IsUpper(x.chr));
if (firstUpperCharIndex != null)
{
text = text.Insert(firstUpperCharIndex.index, ",,");
}
什么你有没有尝试过?你有什么麻烦?你问如何循环字符串中的字符?如何检查一个字符是否大写?如何汇总结果? – SLaks
我试图找到像这样的字符串的大写字母: – user2227354
基本上,我试图找到myVARIABLE或IEnumerable的大写部分。然后,我想要取出该部分字符串并插入“,,”,这是盲文语言中的双帽符号,因此字符串将如下所示:,,即可数字。 – user2227354