Bir ipim var
"Hello! world!"
Çıkarmak için bir düzeltme veya kaldırma yapmak istiyorum! dünyadan ama kapalı değil Merhaba.
Bir ipim var
"Hello! world!"
Çıkarmak için bir düzeltme veya kaldırma yapmak istiyorum! dünyadan ama kapalı değil Merhaba.
Yanıtlar:
"Hello! world!".TrimEnd('!');
DÜZENLE:
Oldukça herkesin verilen dizenin son karakterini kaldırmayı önerdiği bu tür sorularda fark ettiklerim. Ancak bu Trim yönteminin tanımını karşılamaz.
Kırp - Bu örneğin başından ve sonundan boşluk karakterlerinin tüm oluşumlarını kaldırır.
Bu tanım altında dizeden sadece son karakteri kaldırmak kötü bir çözümdür.
Eğer "karakter dizgiden kes" istiyorsak böyle bir şey yapmalıyız
Genişletme yöntemi olarak örnek:
public static class MyExtensions
{
public static string TrimLastCharacter(this String str)
{
if(String.IsNullOrEmpty(str)){
return str;
} else {
return str.TrimEnd(str[str.Length - 1]);
}
}
}
Not Aynı değer yani tüm karakterleri kaldırmak için (!!!!) uzaklaşmaların tüm varoluşlarda yukarıdaki yöntemi istiyorsanız '!' ancak son karakteri kaldırmak istiyorsanız bunu kullanmalısınız:
else { return str.Remove(str.Length - 1); }
String withoutLast = yourString.Substring(0,(yourString.Length - 1));
if (yourString.Length > 1)
withoutLast = yourString.Substring(0, yourString.Length - 1);
veya
if (yourString.Length > 1)
withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1);
... boşluk olmayan bir karakteri sondan kaldırmak istemeniz durumunda.
TrimEnd()yöntem olmaması olabilir ve eğer varsa, sonraki Substring(..)çağrıların kısa dizelerde başarısız olmasına neden olabilir .
string s1 = "Hello! world!";
string s2 = s1.Trim('!');
Bunu dene:
return( (str).Remove(str.Length-1) );
bunu da kullanabilirsiniz:
public static class Extensions
{
public static string RemovePrefix(this string o, string prefix)
{
if (prefix == null) return o;
return !o.StartsWith(prefix) ? o : o.Remove(0, prefix.Length);
}
public static string RemoveSuffix(this string o, string suffix)
{
if(suffix == null) return o;
return !o.EndsWith(suffix) ? o : o.Remove(o.Length - suffix.Length, suffix.Length);
}
}
@Damian Leszczyński - Vash'in biraz değiştirilmiş versiyonu, sadece belirli bir karakterin kaldırılmasını sağlayacaktır.
public static class StringExtensions
{
public static string TrimLastCharacter(this string str, char character)
{
if (string.IsNullOrEmpty(str) || str[str.Length - 1] != character)
{
return str;
}
return str.Substring(0, str.Length - 1);
}
}
TrimEnd kullanarak bir uzantı yazma yolunu aldım, çünkü zaten satır içi kullanıyordum ve bundan memnun kaldım ... yani:
static class Extensions
{
public static string RemoveLastChars(this String text, string suffix)
{
char[] trailingChars = suffix.ToCharArray();
if (suffix == null) return text;
return text.TrimEnd(trailingChars);
}
}
Statik sınıfı kullanarak sınıflarınıza ad alanını eklediğinizden emin olun; P ve kullanımı:
string _ManagedLocationsOLAP = string.Empty;
_ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(",");
Bunu basitleştirmek için örnek bir Extension sınıfı: -
internal static class String
{
public static string TrimEndsCharacter(this string target, char character) => target?.TrimLeadingCharacter(character).TrimTrailingCharacter(character);
public static string TrimLeadingCharacter(this string target, char character) => Match(target?.Substring(0, 1), character) ? target.Remove(0,1) : target;
public static string TrimTrailingCharacter(this string target, char character) => Match(target?.Substring(target.Length - 1, 1), character) ? target.Substring(0, target.Length - 1) : target;
private static bool Match(string value, char character) => !string.IsNullOrEmpty(value) && value[0] == character;
}
kullanım
"!Something!".TrimLeadingCharacter('X'); // Result '!Something!' (No Change)
"!Something!".TrimTrailingCharacter('S'); // Result '!Something!' (No Change)
"!Something!".TrimEndsCharacter('g'); // Result '!Something!' (No Change)
"!Something!".TrimLeadingCharacter('!'); // Result 'Something!' (1st Character removed)
"!Something!".TrimTrailingCharacter('!'); // Result '!Something' (Last Character removed)
"!Something!".TrimEndsCharacter('!'); // Result 'Something' (End Characters removed)
"!!Something!!".TrimLeadingCharacter('!'); // Result '!Something!!' (Only 1st instance removed)
"!!Something!!".TrimTrailingCharacter('!'); // Result '!!Something!' (Only Last instance removed)
"!!Something!!".TrimEndsCharacter('!'); // Result '!Something!' (Only End instances removed)
'!' İşaretini kaldırmak istiyorsanız belirli bir ifadedeki karakteri (sizin durumunuzda "dünya") kullanırsanız, bu normal ifadeyi kullanabilirsiniz
string input = "Hello! world!";
string output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline);
// result: "Hello! world"
$ 1 özel karakteri eşleşen tüm "dünya" ifadelerini içerir ve orijinal "dünya" nın yerine kullanılır! ifade