我正在努力将代码从JAVA移植到C#,而部分JAVA代码使用了tokenizer - 但我的理解是,Java中stringtokenizer生成的数组也会有分隔符(在这种情况下为+, - ,/,*,(,))作为代币.我试图使用C#Split()函数,但它似乎消除了分隔符本身.最后,这将解析一个字符串并将其作为计算运行.我做了很多研究,但没有找到任何关于这个主题的参考资料.
有谁知道如何让它们遇到的实际分隔符在split数组中?
令牌化代码:
public CalcLexer(String s)
{
char[] seps = {'\t','\n','\r','+','-','*','/','(',')'};
tokens = s.Split(seps);
advance();
}
Run Code Online (Sandbox Code Playgroud)
测试:
static void Main(string[] args)
{
CalcLexer myCalc = new CalcLexer("24+3");
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
"24 + 3"将产生以下输出:"24","3"我正在寻找输出"24","+","3"
在完全公开的性质中,该项目是类分配的一部分,并使用以下完整的源代码:
http://www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcParser.java.txt http://www.webber-labs.com/mpl/source%20code/Chapter%20Seventeen/CalcLexer .java.txt
我正在JSF中编写一个新站点.目前我编程登录.
几年前我使用过md5,但是使用Rainbow Tables我觉得它的noch更安全了.
那么,我应该如何将密码存储在数据库中?
我的应用程序中有一个servlet过滤器,它拦截所有传入的请求,并尝试从传入的XML中去除空格,并将生成的"干净"XML写入响应.我正在使用XSLT来实现这一目标.请参阅下面的XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
但是,这没有按预期工作.生成的XML与原始XML相同(尽管在样式表中使用了<xsl:strip-space elements ="*"/>.
请帮助我做到这一点.
问候,
- Ashish
我最近遇到过SQL Server的许多不同领域,我通常不会搞砸.让我困惑的其中一个是登录和用户区域.好像它应该是一个非常简单的话题......
似乎每次登录只能有1个用户,每个用户只能登录1次.
登录可以与多个表相关联,从而将该用户与许多表相关联.
所以我的问题是为什么即使有登录和用户?他们似乎几乎是同一个人.有什么不同,或者我似乎缺少什么?
我有一个类和实例列表,看起来像这样(更改字段名称以保护无辜/专有):
public class Bloat
{
public long timeInMilliseconds;
public long spaceInBytes;
public long costInPennies;
}
public class BloatProducer
{
final private List<Bloat> bloatList = new ArrayList<Bloat>();
final private Random random = new Random();
public void produceMoreBloat()
{
int n = bloatList.size();
Bloat previousBloat = (n == 0) ? new Bloat() : bloatList.get(n-1);
Bloat newBloat = new Bloat();
newBloat.timeInMilliseconds =
previousBloat.timeInMilliseconds + random.nextInt(10) + 1;
newBloat.spaceInBytes =
previousBloat.spaceInBytes + random.nextInt(10) + 1;
newBloat.costInPennies =
previousBloat.costInPennies + random.nextInt(10) + 1;
bloatList.add(newBloat);
} …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序托管一些不稳定的第三方代码,我无法在外部进程中控制,以保护我的主应用程序免受它所展示的令人讨厌的错误.我的父进程正在监视另一个进程,并在失败时执行"正确的事情(tm)".
我遇到的问题是,Watson博士仍在检测隔离进程中的崩溃,并在下行过程中附加到进程以进行崩溃转储.这有两个问题:1.显着减慢我检测故障所需的时间,因为在进行故障转储时进程保持活动状态.2.向用户显示恼人的弹出窗口,询问他们是否要将错误报告提交给Microsoft.
显然,我更愿意修复子进程中的错误,但鉴于它不是一个选项,我希望能够有选择地禁用Dr. Watson(以及Vista +中的Windows错误报告).
我在流程中运行了一些自己的代码,然后再转到不受信任的位,所以如果有一个我可以调用的API会影响当前进程,那就没问题了.
我知道:http://support.microsoft.com/default.aspx/kb/188296会禁用Dr.Watson整个机器.我不想这样做,因为它会让我成为一个糟糕的公民,无法在机器范围内进行设置.
我也知道Vista +中的WerSetFlags选项似乎会禁用当前进程的Windows错误报告,但我需要一些能够在早期操作系统版本上禁用Dr.Watson的东西.
我认为这是一个简单的问题,我之前没有像以前那样使用JSON.
很简单,我有一个JSON对象:
fc_json = {
"product_count": 1,
"total_price": 199.95,
"total_weight": 1,
"session_id": "26e8og4ldmlunj84uqf04l8l25",
"custom_fields":{
"affiliateID":"25"
},
"messages":{
"errors":[],
"warnings":[],
"info":[]
}
};
Run Code Online (Sandbox Code Playgroud)
我想用jQuery提取affiliateID的变量.有一个简单的方法吗?我真的不知道.
在我的应用程序中,我希望用户能够选择一个目录来存储内容.我有一个文本字段,我用它来显示他们选择的目录.如果他们只是点击一个目录(不要浏览它),一切都很好.但是,如果他们双击目录并查看其中,则目录名称是重复的.
防爆.他们在主目录中,单击文件夹桌面...返回的路径是〜/ Desktop.另一方面,如果它们在主目录中,双击文件夹Desktop,现在在Desktop文件夹中,返回的路径是〜/ Desktop/Destkop.
这是我正在做的事情:
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
loadField.setText(f.getPath());
}
Run Code Online (Sandbox Code Playgroud)
我也试过做类似的事情,chooser.getCurrentDirectory()但这也不起作用.
编辑:使用Mac OS X,Java 1.6
我正在尝试编写符合OpenSearch规范的OpenSearch建议服务.
http://www.opensearch.org/Specifications/OpenSearch/Extensions/Suggestions
此规范要求服务返回JSON数组,第一个元素是字符串,以下元素是字符串数组.我可以通过返回一个字符串数组(string [] [])并让WCF将其序列化为JSON来获得它.但是,为了符合规范,我试图返回一个对象数组(object []),第一个是字符串,其余的是字符串数组(string []).
每当我尝试返回对象数组时,它都不起作用,例如:
来自服务:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SuggestionService : ISuggestionService
{
public object[] Search(string searchTerms)
{
SearchSuggestions = new object[4];
SearchText = searchTerms;
SearchSuggestions[0] = SearchText;
Text = new string[10];
Urls = new string[10];
Descriptions = new string[10];
// Removed irrelevant ADO.NET code
while (searchResultReader.Read() && index < 10)
{
Text[index] = searchResultReader["Company"].ToString();
Descriptions[index] = searchResultReader["Company"].ToString();
Urls[index] = "http://dev.localhost/Customers/EditCustomer.aspx?id=" +
searchResultReader["idCustomer"];
index++;
}
SearchSuggestions[1] = Text;
SearchSuggestions[2] = Descriptions;
SearchSuggestions[3] = Urls;
return …Run Code Online (Sandbox Code Playgroud) 我重载了运算符<<
template <Typename T>
UIStream& operator<<(const T);
UIStream my_stream;
my_stream << 10 << " heads";
Run Code Online (Sandbox Code Playgroud)
工作但是:
my_stream << endl;
Run Code Online (Sandbox Code Playgroud)
给出编译错误:
错误C2678:二进制'<<':找不到哪个运算符带有'UIStream'类型的左操作数(或者没有可接受的转换)
做my_stream << endl工作的工作是什么?