在SubString方法中返回错误的字符

时间:2017-07-25 11:27:15

标签: javascript string substring

我是JS的新手,我尝试过以下代码,

var str = "\">2\""
var res = str.substring(2,1);

返回 >

预期: 2

我已通过以下代码检查了这个,

var str = "\">2\""
var res = str.substring(2);

返回 "2\"

预期: "2\"

如果我误解了任何内容,请告诉我,为什么它会返回>而不是2。在C#中它可以正常工作。

提前致谢

3 个答案:

答案 0 :(得分:6)

实际上你在案例1中做错了吗

当你这样做时

str.substring(1,2);

这实际上意味着

>

来自docs

  

如果indexStart大于indexEnd,则substring()的效果就好像交换了两个参数一样;例如,str.substring(1,0)== str.substring(0,1)。

由于1,2处的字符为str.substring(2); ,因此您得到相同的结果。

但是当你这样做时

 str.substring(2, str.length-1);

它实际上等于

    using System.Collections.Generic;
    using System.ServiceModel;
    using System.ServiceModel.Web;

    namespace BaseWebServices
    {
        // NOTE: The interface name "IMessage" here must match the references to "IMessage" in Web.config.
        // NOTE 2: Parameters must be string data type when using UriTemplate
        [ServiceContract]
        public interface IMessage
        {
            [OperationContract]
            [WebInvoke(
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                BodyStyle = WebMessageBodyStyle.WrappedRequest,
                UriTemplate = "GetBasket")]
            List<BasketItemDTO> GetBasket();
        }
    }
  

如果省略indexEnd,则substring()将字符提取到字符串的末尾。

答案 1 :(得分:0)

javascript substring函数将像这样工作

string.substring(开始,结束)

package pojos;

import com.google.gson.annotations.SerializedName;

import java.util.ArrayList;
import java.util.List;

public class GeoEvent {

    public String userId;

    public GeoEvent(String userId){
     this.userId= userId;
    }

    public List<GeoEvents> Table = new ArrayList<>();

    public class GeoEvents {

        @SerializedName("Location")
        public String Location;
        @SerializedName("DateTime")
        public String DateTime;

        public String getLocation() {
            return Location;
        }

        public void setLocation(String location) {
            Location = location;
        }

        public String getDateTime() {
            return DateTime;
        }

        public void setDateTime(String dateTime) {
            DateTime = dateTime;
        }
    }
}

在这种情况下 如果“start”大于“end”,它将交换两个参数:

所以答案只会&gt;

,在第二种情况下

var str = "\">2\""
var res = str.substring(2,1);

从位置2开始提取,并提取其余字符串:

所以答案 2“

此链接可以帮助您获取更多信息javascript substring function

答案 2 :(得分:0)

substring(2,1)只为你提供第二个位置的字符, where substring(2)返回从第2个位置到字符串结尾的字符串。