Jaka jest JavaScript równoważne z niniejszym C#
Metoda:trymowania specyfika z ciągiem
var x = "|f|oo||";
var y = x.Trim('|'); // "f|oo"
C# przycina wybrany znak tylko w zaczynają i koniec łańcucha!
Jaka jest JavaScript równoważne z niniejszym C#
Metoda:trymowania specyfika z ciągiem
var x = "|f|oo||";
var y = x.Trim('|'); // "f|oo"
C# przycina wybrany znak tylko w zaczynają i koniec łańcucha!
Jedna linia jest wystarczająco :
var x = '|f|oo||';
var y = x.replace(/^\|+|\|+$/g, '');
document.write(x + '<br />' + y);
^\|+ beginning of the string, pipe, one or more times
| or
\|+$ pipe, one or more times, end of the string
W zależności :
function trim (s, c) {
if (c === "]") c = "\\]";
if (c === "\\") c = "\\\\";
return s.replace(new RegExp(
"^[" + c + "]+|[" + c + "]+$", "g"
), "");
}
s = ".foo..oo...";
console.log(s, "->", trim(s, "."));
s = "|foo||oo|||";
console.log(s, "->", trim(s, "|"));
s = "]foo]]oo]]]";
console.log(s, "->", trim(s, "]"));
s = "\\foo\\\\oo\\\\\\";
console.log(s, "->", trim(s, "\\"));
Według mojej wiedzy, jQuery nie ma wbudowanej funkcji, o którą pyta. z JavaScript jednak można po prostu użyć zastąpić, aby zmienić treść swojej wyrażenie:
x.replace(/|/i, ""));
ten zastąpi wszystkich wystąpień | z niczym.
try:
console.log(x.replace(/\|/g,''));
Jeśli dobrze zrozumiałem, chcesz usunąć specyficzny charakter wyłącznie wtedy, gdy znajduje się na początku lub na końcu łańcucha (ex: „fo || || oo | ||| "powinno stać się" foo || oo "). Można utworzyć funkcję ad hoc, co następuje:
function trimChar(string, charToRemove) {
while(string.charAt(0)==charToRemove) {
string = string.substring(1);
}
while(string.charAt(string.length-1)==charToRemove) {
string = string.substring(0,string.length-1);
}
return string;
}
Przetestowałem tę funkcję z poniższym kodzie:
var str = "|f|oo||";
$("#original").html("Original String: '" + str + "'");
$("#trimmed").html("Trimmed: '" + trimChar(str, "|") + "'");
można użyć wyrażenia regularnego takie jak:
var x = "|f|oo||";
var y = x.replace(/^[\|]+|[\|]+$/g, "");
alert(y); // f|oo
AKTUALIZACJA:
Jeśli chcesz uogólnić tę int O funkcji, można wykonać następujące czynności:
var escapeRegExp = function(strToEscape) {
// Escape special characters for use in a regular expression
return strToEscape.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
};
var trimChar = function(origString, charToTrim) {
charToTrim = escapeRegExp(charToTrim);
var regEx = new RegExp("^[" + charToTrim + "]+|[" + charToTrim + "]+$", "g");
return origString.replace(regEx, "");
};
var x = "|f|oo||";
var y = trimChar(x, "|");
alert(y); // f|oo
Spróbuj tego:
var x = "|f|oo||";
var y = x.slice(1, 5, 7); ---> y=f|oo
działa tylko tak długo, jak ciąg 'x' nie zmienia się – fubo
utrzymać to pytanie na bieżąco:
tutaj jest podejście chciałbym wybrać na funkcję regex przy użyciu operatora spread ES6.
function trimByChar(string, character) {
const first = [...string].findIndex(char => char !== character);
const last = [...string].reverse().findIndex(char => char !== character);
return string.substring(first, string.length - last);
}
Można przyciąć kilka znaków na raz:
String.prototype.trimChars = function (c) {
var re = new RegExp("^[" + c + "]+|[" + c + "]+$", "g");
return this.replace(re,"");
}
var x = "|f|oo||";
x = x.trimChars('|'); // f|oo
var y = "..++|f|oo||++..";
y = y.trimChars('|.+'); // f|oo
var z = "\\f|oo\\"; // \f|oo\
// For backslash, remember to double-escape:
z = z.trimChars("\\\\"); // f|oo
@fubo: Nie, niezupełnie. To jest wersja demonstracyjna, jeśli wkleisz ją do konsoli, po prostu wydrukuje wynik. Rozumiem, że może to być mylące, więc je zredagowałem. – marlar
String.prototype.TrimStart = function (n) {
if (this.charAt(0) == n)
return this.substr(1);
};
String.prototype.TrimEnd = function (n) {
if (this.slice(-1) == n)
return this.slice(0, -1);
};
Usuwa tylko jedno wystąpienie, ale nie przycina, dopóki postać nie jest w pełni przycięta – KoalaBear
czy istnieje sposób, aby usunąć | tylko na początku/końcu? – fubo
Właściwie uważam, że ten post sprawi, że będziesz na bieżąco z pytaniem: http://stackoverflow.com/questions/20196088/jquery-remove-first-and-last-character-of-string –
@fubo Sure. .. Wrzuć '$' jak to tylko na końcu: '" || spam ||| ".replace (/ \ | + $/g," ")' lub '^' jak to tylko na początek : '" || spam ||| ".replace (/^\ | +/g," ")' – ruffin