我正在嘗試查找字符串的大寫部分,然後在盲文語言中插入兩個代表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