// Starts, ends...
bool b = haystack.StartsWith("needle");
bool b = haystack.EndsWith("needle");
// IndexOf, one time...
int first = haystack.IndexOf("needle");
int last = haystack.LastIndexOf("needle");
// IndexOf, multiple times...
int position = haystack.IndexOf("needle");
while (position != -1) {
Console.WriteLine(position);
position = haystack.IndexOf("needle {0}", position + 1);
}
// Sustring...
string fullName = "Cynthia Susan Lee";
string lastName = fullName.Substring(14);
// More functions...
str.concat(str2);
str.replace(str2);
str.trim(str2);
// Class StringBuilder()...
StringBuilder strbuff = new StringBuilder();
strbuff.Append("We sold");
strbuff.Append(" doughnuts for $");
strbuff.Append(15.95);
strbuff.Insert(8, " twelve"); // 8 = startposition
StringBuilder strbuff =
new StringBuilder("We moved from Chicago to Atlanta.");
strbuff.Replace(14, 20, "New York"); // start, stop, strReplace
strbuff.Remove(14, 17); // start, stop
// Split...
string strToken = “One Two Three”;
char[] separate = {' ', '\n'};
string[] result = strToken.Split(separate);
foreach (string token in result) {
Console.WriteLine("{0}", token);
}Filter
2007-05-20
Strängar i C#
C#
2007-05-19
Mata in siffror (Input.cs)
C#
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
// Class "Input" handles conversion of a string input to a corresponding number.
// The number is then valid only if it is within the range of a given NumberType.
// Overloaded methods checks for max and min values.
// Because this class is not put into a namespace it is
// possible to include it in any project without changes.
public enum NumberType {
PositiveWithZero,
PositiveNoZero,
NegativeWithZero,
NegativeNoZero,
PositiveAndNegativeWithZero, // all numbers
PositiveAndNegativeNoZero
}
public class Input {
// Changes a string to a double
// The result is saved and sent to the caller in numOut
// Returns true if everything is OK and false otherwise...
public static bool GetDouble(string strIn, NumberType numType, out double numOut) {
if (double.TryParse(strIn, out numOut)) {
switch(numType) {
case NumberType.PositiveWithZero:
return (numOut >= 0.0);
case NumberType.PositiveNoZero:
return (numOut > 0.0);
case NumberType.NegativeWithZero:
return (numOut >= 0.0);
case NumberType.NegativeNoZero:
return (numOut < 0);
case NumberType.PositiveAndNegativeWithZero:
return true;
case NumberType.PositiveAndNegativeNoZero:
return (Math.Round(numOut,8) != 0.0);
}
Debug.Assert(false); // Execution should never come here
return false;
} else {
return false; // String is not a number
}
}
public static bool GetDouble(string strIn, double minValue, double maxValue, out double numOut) {
if (double.TryParse(strIn, out numOut)) { // All numbers allowed
return ((numOut >= minValue) && (numOut <= maxValue));
} else {
return false;
}
}
// Although in C# 2.0 there is int.TryParse, the above GetDouble is reused
// to save some programming lines in connection with checking the range of value type.
public static bool GetInteger(string strIn, NumberType numType, out int numOut) {
double dblvalue = 0.0;
bool bOK = GetDouble(strIn, numType, out dblvalue);
numOut = (int)dblvalue;
return bOK;
}
public static bool GetInteger(string strIn, int minValue, int maxValue, out int numOut) {
if (int.TryParse(strIn, out numOut)) { // All numbers allowed
return ((numOut >= minValue) && (numOut <= maxValue));
} else {
return false;
}
}
} // end class 2007-05-12
Dela upp stora filer
Linux
split -b 10m minstorafil
# delar upp minstorafil i bitar om 10 mb
# fil 1 får namnet xaa, fil 2 xab, osv
# -b anger bitarnas storlek
# bitarna blir kopior - originalfilen finns kvar
cat xaa xab > minnyastorafil
# sätter ihop delarna igen
2007-05-12
Autostarta program i Linux
Linux
System > Inställningar > Sessioner > Startprogram > Lägg till
2007-05-11
Redigera i VIM
Linux
-- 2 lägen: --
Infogaläge (insert, append) = tryck på i eller a (R skriver över text)
Normalläge = tryck på -esc-
(I infogaläget skriver man som vanligt.
I normalläget kan man ge programmet en massa kommandon.)
-- Spara (i normalläge) --
:w (write)
:q! (kasta ändringar, tvinga quit)
:wq(spara ändringar, write and quit)
-- Radera --
Radera tecken (i normalläget) = x (som del)
Radera tecken (i normalläget) = X (som backspace)
Radera slutet av ett ord (delete word) = dw
Radera slutet av en rad = d$
Radera från markören till märke a = d´a (som du sätter med "ma")
Radera hel rad = dd
-- Markera: --
visual mode = v (tecken), V (rad), Ctl-V (block)
flytta sedan markören och utför kommandot på det markerade direkt
-- Ångra --
Ångra tidigare kommandon (undo) = u (även :undo)
Ångra tidigare ändringar på en rad = U
Ångra ångringar (redo) = Ctl - R (även :redo)
-- Kopiera --
Kopiera utan att radera (yank) = y
Klistra in (paste) = p (p efter markören, P före)
"a-z (citat och en liten bokstav) = Kopiera till namngivet register (klippbord)
Ex:
v --markera texten-- "cy (kopierar till c)
"cp (klistrar in från c)
-- Sök --
Sök framåt = /-fras-
Sök bakåt = ?-fras-
Hitta nästa (next) = n (Shft - N motsatt riktn)
Hitta matchande parentes = %
Ersätt gammalt med nytt på en rad (det första ) = :s/gammalt/nytt
Ersätt alla gammalt med nytt på en rad (globalt) = :s/gammalt/nytt/g
Ersätt fraser mellan rad # och rad # = :#,#s/gammalt/nytt/g
Ersätta alla förekomster i filen = :%s/gammalt/nytt/g
Bekräfta varje gång (confirm) = :%s/gammalt/nytt/gc
Kör ett externt kommando = :!kommando
Spara fil (write) = :w -filnamn-
Spara raderna # till # i filen -filnamn- = :#,#w -filnamn-
Infoga fil (read) = :r -filnamn-
-- Hoppa --
Visa position = Ctl - G
Hoppa till början = 1G (rad nr1)
Flytta till slutet = Shft - G
mx = Definiera märke
´x = Hoppa till definierat märke
´´ (två apostrofer) = Hoppa till senaste positionen
´" (apostrof, citat) = När du öppnar en fil: hoppa till senaste positionen du var i ´. (apostrof, punkt) = Hoppa till senaste ändringen
-- Formattera om --
Markera i visual mode med v, sedan
gq
-- Flaggor --
:set ic (ignore case)
:set number och :set nonumber (visar/döljer radnummer)
:set invlist (visar osynliga tecken)
:set textwidth=72 (sätter bredden på raderna)
:set wrap, :set nowrap
(:set all för att visa alla flaggor)
-- .vimrc --
Ovanstående gäller även här...
set nocompatible (först i filen - för att inte vim ska tro att den är vi)
syntax on (Aktivera "syntax highlightning" överallt där det är möjligt.)
set autoindent (eller cindent eller smartindent)
set backspace=indent,eol,start (Tillåter att man använder backspace över de flesta saker, till exempel radslut, i insert mode.)
set formatoptions=tcq (Bestämmer hur Vim skall radbryta texten)
t = Radbryt automatiskt
c = Radbryt kommentarer automatiskt. Sätt in tecknet som definierar kommentaren.
o = Sätt in tecknet som definierar en kommentar när en ny rad skapas med o eller O
q = Tillåt att kommentarer formateras med gq.
l = Bryt inte rader automatiskt, gör detta bara när kommandot gq ges.
:marks (visar alla märken)
:registers (visar alla klipp)
-- Flera fönster --
:split eller :split <filnamn>
Ctrl-ww hoppar genom alla öppna fönster
Ctrl-wj hoppar till fönstret nedanför
Ctrl-wk hoppar till fönmstret ovanför
-- Klistra in en annan fil --
:r <filnamn>
