Ich habe eine Zeichenfolge, die Wörter in einer Mischung aus Groß- und Kleinbuchstaben enthält.
Zum Beispiel: string myData = "a Simple string";
Ich muss das erste Zeichen jedes Wortes (durch Leerzeichen getrennt) in Großbuchstaben umwandeln. Also möchte ich das Ergebnis wie folgt:string myData ="A Simple String";
Gibt es eine einfache Möglichkeit, dies zu tun? Ich möchte den String nicht teilen und die Konvertierung durchführen (das wird mein letzter Ausweg sein). Es ist auch garantiert, dass die Zeichenfolgen in Englisch sind.
Antworten:
MSDN: TextInfo.ToTitleCase
Stellen Sie sicher, dass Sie Folgendes angeben:
using System.Globalization
quelle
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, aber es ist alles andere als perfekt. Zum Beispiel werden Anführungszeichen oder Klammern immer noch nicht verarbeitet -"(one two three)"
->"(one Two Three)"
. Möglicherweise möchten Sie eine neue Frage stellen, nachdem Sie genau herausgefunden haben, was Sie mit diesen Fällen tun möchten.Versuche dies:
Wie bereits erwähnt, liefert die Verwendung von TextInfo.ToTitleCase möglicherweise nicht genau die gewünschten Ergebnisse. Wenn Sie mehr Kontrolle über die Ausgabe benötigen, können Sie Folgendes tun:
Und dann benutze es so:
quelle
Noch eine Variation. Basierend auf mehreren Tipps hier habe ich es auf diese Erweiterungsmethode reduziert, die für meine Zwecke hervorragend funktioniert:
quelle
Persönlich habe ich die
TextInfo.ToTitleCase
Methode ausprobiert , aber ich verstehe nicht, warum sie nicht funktioniert, wenn alle Zeichen in Großbuchstaben geschrieben sind.Obwohl mir die von Winston Smith bereitgestellte util-Funktion gefällt, möchte ich die Funktion bereitstellen, die ich derzeit verwende:
Das Spiel mit einigen Tests Strings:
Geben Ausgabe :
quelle
ToLower()
die gesamte Zeichenfolge aufzurufen , möchten Sie diese Arbeit lieber selbst erledigen und für jedes einzelne Zeichen dieselbe Funktion aufrufen? Es ist nicht nur eine hässliche Lösung, es bietet auch keinen Nutzen und würde sogar länger dauern als die eingebaute Funktion.rest = words[i].Substring(1).ToLower();
Kürzlich habe ich eine bessere Lösung gefunden.
Wenn Ihr Text jeden Buchstaben in Großbuchstaben enthält, konvertiert TextInfo ihn nicht in die richtige Groß- und Kleinschreibung. Wir können das beheben, indem wir die darin enthaltene Kleinbuchstabenfunktion folgendermaßen verwenden:
Dies konvertiert nun alles, was in Propercase eingeht.
quelle
quelle
Wenn jemand an der Lösung für Compact Framework interessiert ist:
quelle
Hier ist die Lösung für dieses Problem ...
quelle
Verwenden Sie
ToLower()
zuerst alsCultureInfo.CurrentCulture.TextInfo.ToTitleCase
für das Ergebnis, um die richtige Ausgabe zu erhalten.quelle
Ich brauchte einen Weg, um mit allen Großbuchstaben umzugehen, und ich mochte die Lösung von Ricky AH, aber ich ging noch einen Schritt weiter, um sie als Erweiterungsmethode zu implementieren. Dies vermeidet den Schritt, dass Sie Ihr Zeichenarray erstellen und dann jedes Mal explizit ToArray darauf aufrufen müssen. Sie können es also einfach in der Zeichenfolge aufrufen, wie folgt:
Verwendung:
Code:
quelle
Es ist besser zu verstehen, indem Sie Ihren eigenen Code ausprobieren ...
Weiterlesen
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Konvertieren Sie einen String in Großbuchstaben
2) Konvertieren Sie eine Zeichenfolge in Kleinbuchstaben
3) Konvertieren Sie einen String in TitleCase
quelle
Hier ist eine Implementierung, Zeichen für Zeichen. Sollte mit "(One Two Three)" funktionieren
quelle
quelle
Mit dieser einfachen Methode können Sie Text oder Zeichenfolge direkt in die richtige ändern, nachdem Sie nach null oder leeren Zeichenfolgenwerten gesucht haben, um Fehler zu vermeiden:
quelle
Versuche dies:
Rufen Sie diese Methode im TextChanged-Ereignis der TextBox auf.
quelle
Ich habe die obigen Referenzen verwendet und die vollständige Lösung lautet: -
// Benötige ein Ergebnis wie "Infoa2z bedeutet alle Informationen"
// Wir müssen den String auch in Kleinbuchstaben konvertieren, sonst funktioniert er nicht richtig.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
quelle
Dies ist, was ich benutze und es funktioniert in den meisten Fällen, es sei denn, der Benutzer beschließt, es durch Drücken von Shift oder Feststelltaste zu überschreiben. Wie auf Android- und iOS-Tastaturen.
quelle
Für diejenigen, die es automatisch per Tastendruck tun möchten, habe ich es mit folgendem Code in vb.net auf einem benutzerdefinierten Textfeld-Steuerelement gemacht - Sie können es natürlich auch mit einem normalen Textfeld tun -, aber ich mag die Möglichkeit, wiederkehrenden Code für bestimmte Steuerelemente hinzuzufügen Über benutzerdefinierte Steuerelemente passt es zum Konzept von OOP.
quelle
Funktioniert auch mit Kamelhülle: 'someText in YourPage'
quelle
Als Erweiterungsmethode:
Verwendungszweck:
Ergebnis:
Kebab Is Deliciou's ;d C...
quelle
Alternative in Bezug auf
Microsoft.VisualBasic
(behandelt auch Großbuchstaben):quelle
Ohne zu verwenden
TextInfo
:Es durchläuft jeden Buchstaben in jedem Wort und wandelt ihn in Großbuchstaben um, wenn es der erste Buchstabe ist, andernfalls wird er in Kleinbuchstaben umgewandelt.
quelle
Ich weiß, dass dies eine alte Frage ist, aber ich habe nach dem gleichen Thema für C gesucht und es herausgefunden, also dachte ich, ich würde es posten, wenn jemand anderes nach einem Weg in C sucht:
quelle