基本上,我有喜欢的关键词sin(和cos(一个文本框,我想有更像一个单个字符.
当我提到下面的整个字符串时,它指的是字符组(例如" sin(")
以sin(身份为例:
如果插入符号处于此位置(后面s):

如果按下del,则会删除整个字符串.如果按下右箭头键,插入符将跳转到(.
如果插入符号处于此位置(之后():

如果backspace按下,则将删除整个字符串.如果按下左箭头键,插入符将跳到后面s.
编辑: 感谢John Skeet指出这一点.
选择字符组的任何子字符串(例如sifrom sin()应该选择整个字符串.
对不起,如果难以理解,我想到的是有点难以言辞.
编辑2:感谢Darksheao为我提供了退格键和删除键的答案.我将该delete段重新定位到PreviewKeyDown事件,因为它不能与KeyPress事件一起使用.
编辑3:使用charCombinations做事方式,这是我如何执行左右键的实现:
#region Right
case Keys.Right:
{
s = txt.Substring(caretLocation);
foreach (string combo in charCombinations)
{
if (s.StartsWith(combo))
{
textBox1.SelectionStart = caretLocation + combo.Length - 1;
break;
}
}
break;
}
#endregion
#region Left
case Keys.Left:
{
s …Run Code Online (Sandbox Code Playgroud) 所以我创建了一个所有字符串都可以使用的函数,它被称为append。
local strmt = getmetatable("")
function strmt.__index.append(self, str)
self = self..str
return self
end
Run Code Online (Sandbox Code Playgroud)
然后该函数的使用方式如下:
self = self:append("stuff")
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个函数来执行此操作:
local stuff = "hi "
stuff:append("bye")
print(stuff)
Run Code Online (Sandbox Code Playgroud)
并生产
hi bye
Run Code Online (Sandbox Code Playgroud) 继续我之前的问题(链接在这里:Lua如何创建可用于变量的自定义函数?),有没有办法创建相同类型的函数,除了表之外的其他东西?例如,
str = "stuff"
letter = str:foo() --Maybe have the foo function extract the first letter?
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个以相同的方式工作的函数
lowerCasestr = str:lower()
Run Code Online (Sandbox Code Playgroud)
作品?
基本上,我写了这个扩展方法:
public static class Extensions
{
public static bool IsMaths(this Char it)
{
if (char.IsDigit(it) || char.IsControl(it)) { return true; }
foreach (char each in new char[] { '-', '+', '(', ')', '/', '*', '%', '^', '.' })
{
if (each.Equals(it)) { return true; }
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
当我试着打电话时:
else if (!Char.IsMaths(e.KeyChar)) { e.Handled = true; }
Run Code Online (Sandbox Code Playgroud)
Visual Studio给出了错误'char' does not contain a definition for 'IsMaths'.为什么会这样?
那么,随着 C++14 中新的auto返回类型推导,有没有办法创建具有不同返回类型的函数呢?
例如:
auto replaceStr(string base, string search, string replace) {
size_t found = base.find(search);
if (found == string::npos) {
return false; //Return this is replace is not found
}
else {
base.replace(found, (found+search.length()), replace);
return base; //Return this after the replacement
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这行不通。那么有没有办法让它发挥作用呢?
编辑:评论中的大多数人都告诉我这是不可能的,因为编译器不知道函数在编译时的返回类型。那么也许我们可以让函数具有默认返回类型和可选返回类型?
我编写了一串代码来检查给定的数字n是否为素数,并相应地返回true或false.
#include <iostream>
using namespace std;
bool primeChecker(int n) {
int ul = n;
int x;
for (int f = 2; f < n; f++) {
if (f >= ul) {
break;
}
x = n % f;
if (x == 0) {
cout « n « " is not prime." « endl;
return false;
}
else {
ul = n/f+1;
}
}
cout « n « " is prime." « endl;
return true;
}
int main()
{ …Run Code Online (Sandbox Code Playgroud) 我有一个字符串的"数组"定义如下:
typedef map<int, string> strArr;
Run Code Online (Sandbox Code Playgroud)
每当我这样做:
strArr args;
if(!args[1]) { /*do stuff*/ }
Run Code Online (Sandbox Code Playgroud)
编译器告诉我,no match for 'operator!'为什么会这样,我该如何解决这个问题呢?
编辑:
有没有办法使这项工作bool operator! ()!