Sagen wir, ich habe eine string
wie diese, der linke Teil ist ein Wort, der rechte Teil ist eine Sammlung von Indizes (single oder range) zur Referenz furigana (Phonetik) für kanjis in meinem Wort:C# Wie erstelle ich eine neue Zeichenfolge basierend auf multiple Entfernungsindex
string myString = "子で子にならぬ時鳥,0:こ;2:こ;7-8:ほととぎす"
Das Muster im Detail:
word,<startIndex>(-<endIndex>):<furigana>
Was wäre der beste Weg, so etwas wie dieses (mit einem Raum vor dem Kanji zu erreichen, welcher Teil zu markieren ist verbunden mit [Furigana]):
子[こ]で 子[こ]にならぬ 時鳥[ほととぎす]
bearbeiten: (Danke für Ihre Kommentare Männer)
Hier ist, was ich bisher geschrieben:
static void Main(string[] args)
{
string myString = "ABCDEF,1:test;3:test2";
//Split Kanjis/Indices
string[] tokens = myString.Split(',');
//Extract furigana indices
string[] indices = tokens[1].Split(';');
//Dictionnary to store furigana indices
Dictionary<string, string> furiganaIndices = new Dictionary<string, string>();
//Collect
foreach (string index in indices)
{
string[] splitIndex = index.Split(':');
furiganaIndices.Add(splitIndex[0], splitIndex[1]);
}
//Processing
string result = tokens[0] + ",";
for (int i = 0; i < tokens[0].Length; i++)
{
string currentIndex = i.ToString();
if (furiganaIndices.ContainsKey(currentIndex)) //add [furigana]
{
string currentFurigana = furiganaIndices[currentIndex].ToString();
result = result + " " + tokens[0].ElementAt(i) + string.Format("[{0}]", currentFurigana);
}
else //nothing to add
{
result = result + tokens[0].ElementAt(i);
}
}
File.AppendAllText(@"D:\test.txt", result + Environment.NewLine);
}
Ergebnis:
ABCDEF,A B[test]C D[test2]EF
Ich kämpfe ein finden Weg zur Verarbeitung von Entfernungsindizes:
string myString = "ABCDEF,1:test;2-3:test2";
Result : ABCDEF,A B[test] CD[test2]EF
Können Sie bitte ein Beispiel mit nur alphanumerischen Zeichen erstellen? Außerdem sollten Sie Ihren Versuch teilen, den Code, den Sie versucht haben, usw. – MarcinJuraszek
Ein [kurzes, eigenständiges und korrektes (kompilierbares) Beispiel] (http://sscce.org/) würde helfen zu klären, was Sie immens zu tun versuchen. –