我想编写非常好看的惯用Scala代码,list indexOf foo getOrElse Int.MaxValue但现在我必须满足于寻找愚蠢的Java代码val result = list indexOf foo; if (result < 0) Int.MaxValue else result.是否有充分的理由indexOf在Scala中返回Int而不是Option[Int]
如何在保持函数单行代码的同时从结果中删除括号?
day_list = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
def day_to_number(inp):
return [day for day in range(len(day_list)) if day_list[day] == inp]
print day_to_number("Sunday")
print day_to_number("Monday")
print day_to_number("Tuesday")
print day_to_number("Wednesday")
print day_to_number("Thursday")
print day_to_number("Friday")
print day_to_number("Saturday")
Run Code Online (Sandbox Code Playgroud)
输出:
[0]
[1]
[2]
[3]
[4]
[5]
[6]
Run Code Online (Sandbox Code Playgroud) 我有一个字节数组,希望找到一些字节的"出现".
例如,00 69 73 6F 6D在一个非常大的字节数组(> 50/100兆字节)
要么
更好的反向操作:在不知道代码的情况下搜索最常见的模式,代码应该能够从文件中读取并找到它.
所以我试图让我的程序从文本文件中打印出每个单词和标点符号的索引(当它出现时)。我已经完成了那部分。- 但问题是当我尝试使用这些索引位置重新创建带有标点符号的原始文本时。这是我的代码:
with open('newfiles.txt') as f:
s = f.read()
import re
#Splitting string into a list using regex and a capturing group:
matches = [x.strip() for x in re.split("([a-zA-Z]+)", s) if x not in ['',' ']]
print (matches)
d = {}
i = 1
list_with_positions = []
# the dictionary entries:
for match in matches:
if match not in d.keys():
d[match] = i
i+=1
list_with_positions.append(d[match])
print (list_with_positions)
file = open("newfiletwo.txt","w")
file.write (''.join(str(e) for e in list_with_positions))
file.close()
file = open("newfilethree.txt","w") …Run Code Online (Sandbox Code Playgroud) String xStr = "hello/master/yoda";
String remv_last = xStr.substring(0, xStr.lastIndexOf("/"))
System.out.println(remv_last);
Run Code Online (Sandbox Code Playgroud)
输出
hello/master
Run Code Online (Sandbox Code Playgroud)
我的问题是;我怎样才能得到这个输出,谢谢你的帮助。
master/yoda
Run Code Online (Sandbox Code Playgroud) 我正在使用 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 函数返回序列 …
我在重复某些值的数组中使用一组数值。我想找到所有重复值出现的索引。
例如,我使用以下代码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循环,但我想知道是否有更好的方法来做到这一点,而无需遍历整个数组。基本上,我试图节省显式遍历整个数组的开销。)
我想使用indexOf,但 中的对象List不会是相等的对象,但它们的值相等(即它们相等但不相等)。
我想以indexOf与方法不同的方式进行比较Object.equals。我正在考虑重写 equals 方法以使用 isEquivalent 方法,但我不确定如何执行此操作(如果可能的话)。
我已经尝试了很多变体,但不断收到错误:
List<CustomType> items{
@Override
public boolean equals(Object o)
{
return false;
}
}
= //stuff to populate it
Run Code Online (Sandbox Code Playgroud)
我也看到了这个答案,他们谈论 EqualityComparer's java 中是否有类似的东西?
或者还有其他方法可以实现这一点吗?
我正在尝试获取文件夹名称中正则表达式匹配的起始位置。
dir c:\test | where {$_.fullname.psiscontainer} | foreach {
$indexx = $_.fullname.Indexofany("[Ss]+[0-9]+[0-9]+[Ee]+[0-9]+[0-9]")
$thingsbeforeregexmatch.substring(0,$indexx)
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,这应该可行,但由于 indexofany 不处理正则表达式,所以我陷入了困境。
Rust 的标准库中是否有一个find函数可以搜索从字符串中给定索引开始的子字符串?就像indexOfJavaScript 中一样。