Potrzebujemy funkcji C#, która usunie wszystkie znaki specjalne z ciągu znaków.Regex usuń znaki specjalne
Co więcej, czy można zmienić "George's" na "George" (usunąć zarówno pojedynczy cudzysłów, jak i znaki)?
Potrzebujemy funkcji C#, która usunie wszystkie znaki specjalne z ciągu znaków.Regex usuń znaki specjalne
Co więcej, czy można zmienić "George's" na "George" (usunąć zarówno pojedynczy cudzysłów, jak i znaki)?
Ta metoda spowoduje usunięcie wszystkich elementów oprócz liter, cyfr i spacji. Będzie on również usunąć wszelkie "lub«a następnie znaków s.
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex("(?:[^a-z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
Cześć Ryan, dzięki za kod. Działa dobrze. Czy można zignorować białą przestrzeń. Chcę, żeby tam była biała przestrzeń. Dzięki. – user374760
Jeśli jest to odpowiedź, nie zapomnij oznaczyć go jako takiego. –
Cześć Ryan, Nie chcemy usuwać białych znaków ze sznurka. Daj mi znać, jak to zrobić. Oznacziłem to jako rozwiązanie. Dzięki. – user374760
Pomogłoby, gdybyśmy wiedzieli, co to jest specjalny znak. Oto funkcja, mimo że załatwi
public bool IsSpecialChar(char c) {
// Need you to fill this out
}
public string RemoveSpecialChars(string s) {
var builder = new System.Text.StringBuilder();
foreach (var cur in s) {
if (!IsSpecialChar(cur)) {
builder.Append(cur);
}
}
return builder.ToString();
}
jej lepiej zdefiniować listę znaków, które chcesz zachować, zamiast wyliczać wszystkie inne nie chcesz. Na przykład, użycie perlregexes s/[^A-Za-z0-9]+//g
usunie wszelki znak nie będący wyrazem (przepraszam, nie jestem zaznajomiony z wyrażeń regularnych c: D).
Dla innego problemu, można zdefiniować co usunąć na podstawie poprzedniego wyrazu jeśli dbasz o niektórych przypadkach (jak tylko usunięcie 's
jeśli istnieje słowo przed nim), w przeciwnym razie po prostu usunąć wszystkie wystąpienia 's
.
Myślę, że chodziło ci o' s/\ W + // g' ('tr ///' nie jest wyposażone w regex, a zbiór "słowo" znaków "zawiera dużo więcej niż tylko" [A-Za-z0-9] "). Wersja C# będzie miała postać' Regex.Replace (input, @ "\ W +", String.Empty) '. –
@Alan Moore you mam rację, zapominam o tym =). Regardi Jeśli chodzi o znaki słowne, jestem tego świadomy, naprawdę myślałem, że tego właśnie chce. – javs
Tak, rzuciłem w to trochę o znakach słownych, żeby uratować nas od kary z tchristem. : D –
public static string RemoveSpecialCharacters(string input)
{
Regex r = new Regex(
"(?:[^a-zA-Z0-9 ]|(?<=['\"])s)",
RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
}
odpowiedź Ryana ma rację. Wystarczy dodać A-Z
jak wielu ludzi będzie go potrzebować.
Przynajmniej określenie»znak specjalny " – BoltClock
masz na myśli: usunąć wszystko, co nie jest literą, cyfrą lub spacją? –