我读到文件I/O很慢,并且正在查看写入文件的我自己的代码,发现即使对于像逗号一样的小东西,我也经常调用write write write.
outFile.write(",")
所以我想,如果我把所有的角色存放在某个地方(比如,我不知道,1 KB的字符或其他东西在写出之前),也许会更好.
我该如何实现呢?我只是获取一个列表并开始向其附加字符串,然后进行连接并将结果字符串写出来吗?或者可能有一个更好的方法.
h = {1=>[1,2,3], 2=>[4,5,6]} new_arr = [] h.each_value {|arr| new_arr.concat(arr) }
这有效,但是更像红宝石的方式呢?
所有值都是数组,但不应修改每个数组的元素.
我想在做数学时将罗马数字与阿拉伯数字混合.
我会为每个符号定义一些类
class I end class V end class X end
现在我希望能够说出类似的话
5 + V # results in 10 X + 12 # results in 22
但我不知道从哪里开始.
我必须定义一个方法,告诉ruby如何5 + V
工作,给每个类一个值,当我说
I
我应该得到值1.
我应该采用什么样的方法让我将其X
视为10号?
我正在使用BinaryWriter
.
现在我写出一个将被填充到 256 个字节的字符串,用空字节来弥补剩余的空间(例如:字符串“hello world”占用 11 个字节,所以我需要再写 245 个空字节) .
当前的方法是正常写出字符串,计算字符串的长度并将其从 256 中减去以获得所需的空字节数,然后使用 for 循环写出所有这些空值。
但也许最好先构建我的空填充字符串,然后一次性写出它。如何用空字节填充我的字符串到 n 的长度?
我猜他们会是空字符而不是空字节。
我有以下代码.它实际上是三个独立的脚本,除了我把它们组合在一起 该Main
班是东西两个Test
类继承.他们可以定义一个out
方法,它将完成开发人员想要的任何事情.这是一种插件风格的设计,以便人们可以out
在自己的类中定义自己的方法,然后当我的主程序选择其中一个自定义类时,我可以说
some_test.run
如果他们决定实施一个out
将要执行的方法.
有没有更好的方法来实现该run
方法,以便我不需要显式写self.class.method_defined?
?该对象可以是任何Test
对象,我不希望他们必须覆盖该run
方法以将自己的类名放在method_defined?
调用之前.
class Main
def run
send(:out) if self.class.method_defined?(:out)
end
end
class TestA < Main
def out
p "Test A here"
end
end
class TestB < Main
def out
p "Test B here"
end
end
a = TestA.new
a.run
# will execute a's out method
b = TestB.new
b.run
# will execute b's out method
Run Code Online (Sandbox Code Playgroud) 给定一个数组:
a = [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
我想旋转的元素i
,通过j
在某些方向n
倍.所以,例如:
i = 2
j = 3
n = 1
Run Code Online (Sandbox Code Playgroud)
旋转a
会产生:
new_a = [1, 2, 4, 3, 5, 6]
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的:
def rotate_sub(a, i, j, n)
return a[0...i] + a[i..j].rotate(n) + a[j+1..-1]
end
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?由于没有绑定检查,i
或者j
很可能超出数组的范围.
如何将字符串转换为正则表达式字符串,正确转义所有正则表达式特定字符?我正在使用插值来构建正则表达式字符串,以允许用户自定义正则表达式而无需触摸代码(或期望他们知道正则表达式)
例
custom_text = "Hello"
my_regex = /#{custom_text}:\s*(\d+)/i
Run Code Online (Sandbox Code Playgroud)
当我的代码使用它时,会产生以下正则表达式
/Hello:\s*(\d+)/i
Run Code Online (Sandbox Code Playgroud)
这允许用户可能提供语言本地化,而不必担心弄清楚我的正则表达式的使用位置,使用方式,或者如果他们改变了某些内容,他们是否会破坏脚本.
然而,如果他们想要包括像句子或问号这样的东西Hello?
,我可能需要先逃避它们.
我将页面中的数字列表传递给JSON中序列化的PHP
{"items":"[1,2,3,4]"}
Run Code Online (Sandbox Code Playgroud)
在我的网址中它只是
...&items={"items":[1,2,3,4]}
Run Code Online (Sandbox Code Playgroud)
我用PHP解码了这个
$json = $_GET["items"];
$arr = json_decode($json, true);
Run Code Online (Sandbox Code Playgroud)
我得到一个阵列
Array ( [items] => [1,2,4] )
Run Code Online (Sandbox Code Playgroud)
但是当我尝试foreach
打开arr["items"]
并打印出每个值时,我得到的只是一个值
[1,2,4]
Run Code Online (Sandbox Code Playgroud)
这是我用来迭代的代码
foreach($res["items"] as $value)
echo $value;
Run Code Online (Sandbox Code Playgroud)
为什么我没有得到类似的东西
1
2
4
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序在其中一个查询中具有以下WHERE子句.
WHERE objId = 5 AND ( field1 like '%%' OR field2 like '%%' OR field3 like '%%')
Run Code Online (Sandbox Code Playgroud)
使用MySQL的EXPLAIN
函数,它似乎没有寻找超过必要的行(幸运的是,objId
过滤掉了很多行的索引),但检查字段是否相似的重点是%%
什么?
我的一个数据处理模块在读取ANSI输入时崩溃了.使用十六进制查看器查看有问题的字符串,0xA0
结尾处有一个神秘的字节.
结果证明这是一个不间断的空间.
我试过替换它:
String s = s.replace("\u00A0", "");
Run Code Online (Sandbox Code Playgroud)
但它没有用.
然后我去打印出该角色正在使用的内容charAt
和Java报告
65533
Run Code Online (Sandbox Code Playgroud)
要么 0xFFFD
将其插入替换代码中,我终于摆脱了它!
但为什么我0xA0
在文件中看到了一个,但是Java将其读作0xFFFD
?
BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
String line = r.readLine();
while (line != null){
// do stuff
line = r.readLine();
}
Run Code Online (Sandbox Code Playgroud)