2009-10-20 9 views
9

Czy istnieje prosty sposób na usunięcie pierwszych 2 i ostatnich 2 znaków w ciągu znaków?Jak usunąć pierwsze dwa i ostatnie dwa znaki w ciągu znaków?

Mam ten ciąg:

\nTESTSTRING\n 

Jak można łatwo mogę je usunąć?

+2

Twoje pytanie jest błędne. "\ n" to JEDNA czcionka (również wymieniona w komentarzu poniżej). –

+0

... chyba że jest to nie tylko znak \ n, ale w rzeczywistości kombinacja znaków \ ​​r \ n używana jako łamanie linii w systemach innych niż * nix. – Guffa

+0

Jeśli chcesz usunąć \ n znaków, możesz użyć: 'str.Replace ('\ n', '');' –

Odpowiedz

46
str = str.Substring(2,str.Length-4) 

Oczywiście trzeba sprawdzić, czy ciąg zawiera więcej niż 4 znaki zanim się do tego. Również w twoim przypadku wydaje się, że \ n jest pojedynczym znakiem nowej linii. Jeśli wszystko, co chcesz zrobić, to usunąć początkowe i końcowe spacje, należy użyć

str.Trim() 

jak sugeruje Charles

+0

To jest poprawna odpowiedź na zadane pytanie, ale wygląda na to, że OP nie zdaje sobie sprawy, że \ n jest ucieczką dla nowej linii. –

+0

Pierwsza część jest poprawna do mojego użytku. Drugi nie ma zastosowania, ponieważ używam go w HTML, a użycie .Trim() nie usuwa w ogóle białych znaków. –

+1

@ Substring Manu powinien być substratem. Jest za mała, aby mi ją przesłać – MobileMon

5

Czy spróbować:

myString.Trim(); 
+3

\ n to JEDNA czcionka. –

2
myString = myString.SubString(2, myString.Length - 4); 
+1

Wymaga sprawdzenia dla opcji "Długość <4". –

+0

(myString == ESTSTRIN) == true –

6
// Test string 
var str = "\nTESTSTRING\n"; 

// Number of characters to remove on each end 
var n = 2; 

// Slimmed string 
string slimmed; 

if (str.Length > n * 2) 
    slimmed = str.Substring(n, str.Length - (n * 2)); 
else 
    slimmed = string.Empty; 

// slimmed = "ESTSTRIN" 
0

Papuccino1,

Jeśli utworzyć metodę rozszerzenia takiego:

public static class StringEnumerator { 

    public static IEnumerable<String> GetLines(this String source) { 
     String line = String.Empty; 
     StringReader stringReader = new StringReader(source); 

     while ((line = stringReader.ReadLine()) != null) { 
      if (!String.IsNullOrEmpty(line)) { 
       yield return line; 
      } 
     } 
    } 
} 

Twój kod zostanie uproszczony i będzie bezpieczniejszy (nie zależy od niebezpiecznego indeksu):

class Program { 

    static void Main(string[] args) { 
     String someText = "\nTESTSTRING\n"; 
     String firstLine = someText.GetLines().First(); 
    } 
} 

Mam nadzieję, że to pomaga,

Ricardo Lacerda Castelo Branco

0
public string RemoveFirstCharFromString(string Text) 
    { 
     string[] arr1 = new string[] { "The ", "A " }; 

     string Original = Text.ToLower(); 
     if (Text.Length > 4) 
     { 
      foreach (string match in arr1) 
      { 
       if (Original.StartsWith(match.ToLower())) 
       { 
        //Original = Original.Replace(match.ToLower(), "").TrimStart(); 
        Original = Original.Replace(Original.Substring(0, match.Length), "").TrimStart(); 
        return Original; 
       } 
      } 
     } 
     return Original; 
    } 
0
string Origional = TextBox1.Text.Replace(TextBox1.Text.Substring(0, 2), ""); 
Origional += Origional.Replace(Origional.Substring((Origional.Length - 2), 2), ""); 
+1

jest zwykle pomocny w dostarczeniu dodatkowych wyjaśnień zamiast wklejania tylko kodu – Tivie

+0

Czy oryginał nie powinien być oryginalny? Nie mogę edytować, ponieważ nadal jestem poniżej 6-znakowego limitu. – WEFX

0

jego prosty z Substring i Remove metod, jak wyszczególniono w this link:

string mystring = "122014"; 

mystring = mystring.Substring(mystring.Length - 4); 
Response.Write(mystring.ToString()); 

//output:2014 


mystring = "122014"; 
string sub = mystring.Remove(mystring.Length - 4); 
Response.Write("<br>"); 
Response.Write(sub.ToString()); 

//output: 12 
Powiązane problemy