测试string是否包含单个反斜杠?

时间:2014-01-20 04:23:50

标签: actionscript-3

你会怎么做?

我需要测试是否

a)字符串包含两个连续的反斜杠

b),如果没有,测试是否至少有一个反斜杠

if(test.indexOf("\\") >= 0) seems to hit on a string that's "ss\\ss", but I have a feeling that's incorrect. I think it's really just testing for 1 backslash.

AS3不允许你这样做(test.indexOf(“\”)> = 0),因为单个反斜杠会转义其余的代码。

用于测试ID3标签中单反斜杠或双反斜杠的存在,因为有些编辑器使用它作为一个标签类别中多个标签的分隔器,例如流派:rock \ pop,或rock \ pop

谢谢!

2 个答案:

答案 0 :(得分:0)

单个反斜杠只会转义结束引号,这会使代码的其余部分成为字符串的一部分。在字符串中指定反斜杠的方法是使用另一个反斜杠来转义它。

例如,

trace("Hello \\ World");   //Output: Hello \ World
trace("Hello \\\\ World"); //Output: Hello \\ World

底线:当您需要一个反斜杠时,字符串中的正确序列为\\。如果你想要两个,只需将相同的序列放两次。在您的情况下,代码将是这样的:

if(test.indexOf("\\\\") >= 0) {
    //test contains two backslashes
} else if(test.indexOf("\\") >= 0) {
    //test contains one backslash
}

如果反斜杠的数量对您无关紧要,您也可以使用以下代码通过正则表达式执行此操作。

if(/\\{1,2}/.test(string_to_test)) {
    //string_to_test contains one or two occurrences only.
}

当然,如果反斜杠的数量无关紧要(你想要至少一个),那么只检查一个反斜杠就足够了

答案 1 :(得分:-1)

如果

(s.indexOf( “\\”)-1个){

//有两个或多个连续的反斜杠

}否则if(s.indexOf(“\”)> -1){

//只有一个反斜杠

}