标签: indexof

为什么 index-of() 在应用于一系列唯一节点时会返回多个值?

我正在使用 xpath2 的索引值来返回排序的节点序列中的 current() 索引。使用 SAXON,节点的排序序列是唯一的,但 index-of 返回两个值的序列。

这不会一直发生,只是偶尔发生,但我找不到任何原因。有人可以解释一下发生了什么吗?

我已经根据例程给出这种奇怪行为的数据示例编写了一个最小示例。

源数据为:

<data>
<student userID="1" userName="user1"/>
<session startedOn="01/16/2012 15:01:18">
</session>
<session startedOn="11/16/2011 13:31:33">
</session>
</data>
Run Code Online (Sandbox Code Playgroud)

我的 xsl 文档将会话节点放入根模板最顶部的排序序列 $orderd 中:

<xsl:template match="/">
<xsl:variable name="nodes" as="node()*" select="/data/session"></xsl:variable>
<xsl:variable name="orderd" as="node()*">
<xsl:for-each select="$nodes">
<xsl:sort select="xs:dateTime(xs:dateTime(concat(substring(normalize-space(@startedOn),7,4),'-',substring(normalize-space(@startedOn),1,2),'-',substring(normalize-space(@startedOn),4,2),'T',substring(normalize-space(@startedOn),12,8)))
)" order="ascending"/>
    <xsl:sequence select="."/>
</xsl:for-each>
</xsl:variable>
Run Code Online (Sandbox Code Playgroud)

由于节点已经由@startOn 排序,但顺序相反,序列 $orderd 应该与文档排序序列 $nodes 相同,但顺序相反。

当我使用 for-each 语句创建输出时,我发现在使用 index-of 测试时,这两个节点以某种方式被视为相同。

下面的代码用于输出数据(并且紧跟在上面的块之后):

<output>
<xsl:for-each select="$nodes">
<xsl:sort select="position()" order="descending"></xsl:sort>
<xsl:variable name="index" select="index-of($orderd,current())" as="xs:integer*"></xsl:variable>
<xsl:variable name="pos" select="position()"></xsl:variable>        
<session reverse-documentOrder="{$pos}"  sortedOrder="{$index}"/>
</xsl:for-each>
</output>
Run Code Online (Sandbox Code Playgroud)

正如输出(如下所示)所示,index-of 函数返回序列 …

sequences saxon indexof xslt-2.0 xpath-2.0

5
推荐指数
1
解决办法
2083
查看次数

IndexOf ComboBox对我不起作用

VB2010.我正在尝试使用Enumeration单位的内容填充ComboBox.我已经设法用字典做了这个.就像是

Dim dUnits As New Dictionary(Of String, Integer)
Dim da As String

For Each enumValue As eUnits In System.Enum.GetValues(GetType(eUnits))
   da = ConvertEnumToCommonName 'gets unique name for an enumeration
   dUnits.Add(da, enumValue)
Next

cbo.DisplayMember = "Key"   'display the the common name
cbo.ValueMember = "Value"   'use the enumeration as the value
cbo.DataSource = New BindingSource(dUnits, Nothing)
Run Code Online (Sandbox Code Playgroud)

当我加载我的表格运作良好.现在,用户可以选择要显示的默认单位.那么我试试吧

Dim defUnits As eUnits = eUnits.Feet
Dim idx As Integer = cbo.Items.IndexOf(defUnits) 'doesnt work, returns a -1
cbo.SelectedIndex = idx
Run Code Online (Sandbox Code Playgroud)

我已经做了一段时间的研究,并且相当肯定这与ComboBox将值存储为字符串有关,实际上我正在搜索一个整数的枚举.不知道我是否有这个权利.无论如何,我似乎无法选择默认项目.我可以尝试另一种方法吗?

vb.net combobox dictionary enumeration indexof

5
推荐指数
1
解决办法
1903
查看次数

如何获取数组中所有出现相同值的索引?

我在重复某些值的数组中使用一组数值。我想找到所有重复值出现的索引。

例如,我使用以下代码indexOf()

var dataset = [2,2,4,2,6,4,7,8];
return dataset.indexOf(2);
Run Code Online (Sandbox Code Playgroud)

但这仅给出了第一次出现的索引2。(即它返回值0。)

但是,我希望2返回所有出现的索引(即0,1,3)。我怎样才能做到这一点?(我知道我可以使用for循环,但我想知道是否有更好的方法来做到这一点,而无需遍历整个数组。基本上,我试图节省显式遍历整个数组的开销。)

javascript arrays indexof

5
推荐指数
1
解决办法
6933
查看次数

StringUtil indexOf() 等效的 postgreSQL 查询

我需要在 postgresql 中实现 stringUtils Class indexOf() 方法。

假设我有一个table其中url的列之一。

url : "http://paypal-info.com/home.webapps.cgi-bin-limit/webscr.cmd-login-submit"

我的要求是在上面的 url 中找到 '/' 的第 3 次出现的索引并做 substring 并且只取paypal-info.com 主机名Postgresql Query

任何关于实现这一点的想法将不胜感激。谢谢

java postgresql indexof string-utils

5
推荐指数
1
解决办法
6207
查看次数

如何测试字符串是否是另一个字符串的最后一个"部分"?

var longString = "this string is long but why"
var shortString = "but why"
Run Code Online (Sandbox Code Playgroud)

我如何测试shortString是否不仅包含在longString中,而且它实际上是字符串的最后一部分.

我曾经indexOf == 0测试过字符串的开头但不知道如何结束它

javascript regex string indexof

5
推荐指数
1
解决办法
49
查看次数

如何通过列名获取列索引?

我有一个列数很少的数据网格-

网格的标题是超链接,我在运行时设置它的值如下-

string strQ1 = "<a href='somePage.aspx?ID=1'>gfgytyty<a>";
dtGrid.Columns[0].Header = strq1;

string strQ2 = "<a href='somePage.aspx?ID=2'>yhtryrtuyu<a>";
dtGrid.Columns[1].Header = strq2;

and so on...
Run Code Online (Sandbox Code Playgroud)

它工作正常。现在假设我想通过名称获取 datatgrid 特定列的索引,但我无法获取它。我试过

int  colIndex = dtGrid.Columns.IndexOf(dtGrid.Columns[strQ2]);
Run Code Online (Sandbox Code Playgroud)

这应该返回 1 作为 columnIndex 但它返回 -1,

此外, dtGrid.Columns[strQ2] 给我空值。

我在这里做错了什么?

c# datagrid indexof winforms

5
推荐指数
2
解决办法
2万
查看次数

对象数组中多个属性的 IndexOf 方法

在给定多个属性的情况下,获取对象数组中对象索引的最佳方法是什么?

想象一下以下示例数组:

var array = [
    {
        color: 'red',
        shape: 'square',
        weight: 200
    },
    {
        color: 'blue',
        shape: 'circle',
        weight: 300
    },
    {
        color: 'red',
        shape: 'circle',
        weight: 100
    }
];
Run Code Online (Sandbox Code Playgroud)

现在我想拥有属性是和是indexOf的对象,在这个例子中,将是.colorredshapecircle2

理想情况下,该函数将在其属性的子集被给出时返回对象的索引,如果没有找到索引则{color: 'red', shape: 'circle'}返回-1

javascript arrays indexof javascript-objects

5
推荐指数
1
解决办法
7897
查看次数

何时在javaScript中使用set

我只是javaScript的初学者,拥有python的背景.我正在尝试这个练习来检查string2的每个字符是否都包含在string1中.例如,如果STRING1是"你好",我会回来true,如果字符串2是"列城"的false,如果字符串2为"低".

我提出的是这个:

function mutation(arr) {
  var set = new Set(string1.split(''));
  for (var i = 0; i < string2.length; i++)
    if (!set.has(string2[i]))
      return false;
  return true;
}
Run Code Online (Sandbox Code Playgroud)

我还可以去转换字符串2为一组,然后就采取即操作的差异set(string2) - set(string1),这将取我的一组是包含字符串,但不是在字符串1个字符,但我读创建一组是昂贵的,所以我没有去先.

我检查了其他解决方案,每个人都在使用string1.indexOf(letter)方法来检查string2中的每个字母是否都在string1中.

我想知道什么时候应该使用一组差异.为什么每个人都在使用array.indexOf()花费O(n)而不是set.has()O(1)的方法的方法.如果我正在使用,是否有任何陷阱set.has().(说浏览器兼容性)?

任何建议都有帮助.

javascript arrays set indexof

5
推荐指数
1
解决办法
1382
查看次数

如何在 JavaScript 中使用 indexOf 和 filter()

这是我找到的用于回答这个问题的代码:编写一个 JavaScript 程序以从数组中删除重复项(忽略大小写敏感)。

var arr1=[3, 'a', 'a', 'a', 2, 3, 'a', 3, 'a', 2, 4, 9, 3, 'A'];

var uniqueArray = arr1.filter(function(elem,i,rep){
    return i == rep.indexOf(elem);
})
console.log(uniqueArray);
Run Code Online (Sandbox Code Playgroud)

我知道 filter() 的作用,并且 indexOf 用于查找元素第一次出现的索引,但我不明白这一行是如何做到的:

i == rep.indexOf(elem);
Run Code Online (Sandbox Code Playgroud)

仅将唯一元素引入 uniqueArray。

javascript arrays indexof

5
推荐指数
1
解决办法
9575
查看次数

Swift 5:字符串中的字符索引

在Swift 5之前,我已经使用了该扩展程序:

  fileprivate extension String {
        func indexOf(char: Character) -> Int? {
            return firstIndex(of: char)?.encodedOffset
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,我收到了不赞成使用的消息:

'encodedOffset' is deprecated: encodedOffset has been deprecated as most common usage is incorrect. Use `utf16Offset(in:)` to achieve the same behavior.
Run Code Online (Sandbox Code Playgroud)

有没有一个更简单的解决方案,而不是使用 utf16Offset(in:)

我只需要作为Int传递回的字符位置的索引。

string indexof swift swift5

5
推荐指数
1
解决办法
2830
查看次数