Saya punya string katakan
"Hello! world!"
Saya ingin melakukan trim atau menghapus untuk mengambil! off dunia tetapi tidak off Hello.
Saya punya string katakan
"Hello! world!"
Saya ingin melakukan trim atau menghapus untuk mengambil! off dunia tetapi tidak off Hello.
Jawaban:
"Hello! world!".TrimEnd('!');
EDIT:
Apa yang saya perhatikan dalam jenis pertanyaan ini yang disarankan oleh setiap orang untuk menghapus karakter terakhir dari string yang diberikan. Tetapi ini tidak memenuhi definisi metode Trim.
Trim - Menghapus semua kemunculan karakter spasi putih dari awal dan akhir instance ini.
Di bawah definisi ini hanya menghapus karakter terakhir dari string adalah solusi yang buruk.
Jadi jika kita ingin "Memotong karakter terakhir dari string" kita harus melakukan sesuatu seperti ini
Contoh sebagai metode ekstensi:
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]);
}
}
}
Catatan jika Anda ingin menghapus semua karakter dengan nilai yang sama yaitu (!!!!) metode di atas menghapus semua keberadaan '!' dari akhir string, tetapi jika Anda ingin menghapus hanya karakter terakhir Anda harus menggunakan ini:
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);
atau
if (yourString.Length > 1)
withoutLast = yourString.TrimEnd().Substring(0, yourString.Length - 1);
... jika Anda ingin menghapus karakter non-spasi putih dari akhir.
TrimEnd()metode dan jika ada itu bisa membuat Substring(..)panggilan berikutnya gagal pada string pendek.
string s1 = "Hello! world!";
string s2 = s1.Trim('!');
Coba ini:
return( (str).Remove(str.Length-1) );
Anda juga bisa menggunakan ini:
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);
}
}
Versi @Damian Leszczyński yang sedikit dimodifikasi - Vash yang akan memastikan bahwa hanya karakter tertentu yang akan dihapus.
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);
}
}
Saya mengambil jalan menulis ekstensi menggunakan TrimEnd hanya karena saya sudah menggunakannya inline dan senang dengan itu ... yaitu:
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);
}
}
Pastikan Anda memasukkan namespace di kelas Anda menggunakan kelas statis; P dan penggunaannya adalah:
string _ManagedLocationsOLAP = string.Empty;
_ManagedLocationsOLAP = _validManagedLocationIDs.RemoveLastChars(",");
Contoh kelas Ekstensi untuk menyederhanakan ini: -
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;
}
Pemakaian
"!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)
Jika Anda ingin menghapus '!' karakter dari ekspresi tertentu ("dunia" dalam kasus Anda), maka Anda dapat menggunakan ekspresi reguler ini
string input = "Hello! world!";
string output = Regex.Replace(input, "(world)!", "$1", RegexOptions.Multiline | RegexOptions.Singleline);
// result: "Hello! world"
karakter spesial $ 1 berisi semua ekspresi "dunia" yang cocok, dan digunakan untuk menggantikan "dunia!" ekspresi