我正在寻找一个很好的JavaScript等价的C/PHP printf()或C#/ Java程序员String.Format()(IFormatProvider对于.NET).
我的基本要求是现在有一千个数字分隔符格式,但处理许多组合(包括日期)的东西会很好.
我意识到Microsoft的Ajax库提供了一个版本String.Format(),但我们不希望该框架的整个开销.
C#具有非常强大的功能String.Format(),可以替换像{0}参数这样的元素.JavaScript有相同的功能吗?
这让我疯了.我相信我问了同样的问题,但我再也找不到了(我使用Stack Overflow搜索,Google搜索,手动搜索我的帖子,搜索我的代码).
我想要的东西就像C#String.Format,你可以做类似的事情
string format = String.Format("Hi {0}",name);
Run Code Online (Sandbox Code Playgroud)
当然只是为JavaScript而且有一个人给了我一个简单的答案,它不像jQuery插件或任何东西,但我认为你做了一些JSON的东西,它工作起来很简单.
我为我的生活找不到这篇文章.
我在我的代码中确实有这个,但我似乎找不到任何使用它的东西,我很确定我曾经使用过几次:
String.prototype.format = function(o)
{
return this.replace(/{([^{}]*)}/g,
function(a, b)
{
var r = o[b];
return typeof r === 'string' ? r : a;
}
);
};
Run Code Online (Sandbox Code Playgroud) 是否可以在JQuery中调用类似C#的String.Format()函数?
这是我的代码
$http.get("/Student/GetStudentById?studentId=" + $scope.studentId + "&collegeId=" + $scope.collegeId)
.then(function (result) {
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中使用http服务来获取基于id的学生详细信息.但是我想在c#.net中编写上面的服务string.format
(eg:- string.format("/Student/GetStudentById/{0}/collegeId/{1}",studentId,collegeId)
Run Code Online (Sandbox Code Playgroud) 在一个例子中我有这个结构(小例子):
<table id=example>
<tr class="blah test example"><td>Test1</td><td><a href="url">LINK</a>Test11</td></tr>
<tr class="blah test example"><td>Test2</td><td><a href="url">LINK</a>Test22</td></tr>
<tr class="blah test example"><td>Test3</td><td><a href="url">LINK</a>Test33</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
在jQuery中我会动态创建它:
var test = "<table id=" + someIDVar + ">"
+ "<tr class=" + classOneVar
+ classTwoVar + classThreeVar + ">"....
Run Code Online (Sandbox Code Playgroud)
等等...(很多其他的东西要写).之后我会追加它:
$(".somePlaceInHtml").append(test);
Run Code Online (Sandbox Code Playgroud)
那么有没有其他方法用jQuery动态编写这样的结构?这对我来说是个问题,因为我的结构很大,不像我在示例中所示的那么小.主要原因是我想为自己和维护此代码的其他开发人员提供更好的可读性.
我试图在TypeScript中重写我的一些JavaScript代码.这些代码中的一些引用了我添加到字符串对象原型的扩展.
String.prototype.format = function () {
var formatted = this;
for (var i = 0; i < arguments.length; i++) {
formatted = formatted.replace(
RegExp("\\{" + i + "\\}", 'g'), arguments[i].toString());
}
return formatted;
};
Run Code Online (Sandbox Code Playgroud)
但是,使用类型脚本添加它非常具有挑战性.
我已经看到了一些示例,其中您声明了基本接口的扩展,然后将一个函数分配给原型以匹配接口并提供您的功能.像这样......
interface String {
showString: () => string;
}
String.prototype.showString = (): string {
return this;
};
Run Code Online (Sandbox Code Playgroud)
除了这个错误,因为"_这个没有定义......"
我尝试过的其他事情是创建一个新类来扩展字符串...
export class MoreString extends string {
}
Run Code Online (Sandbox Code Playgroud)
但是这也行不通,因为你只能扩展类,而string/String不是类,而是内置类型.
扩展String并访问扩展方法的最简单方法是什么?
下面的文本框正在打印从数据库中获取电话号码后的值。
<table>
<tr>
<td>
<s:textfield theme="simple" name="phoneNumber"/>
</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
如何以 (xxx) xxx-xxxx 格式打印此值。注意:这些值以 0123456789 的形式来自数据库,输出应为 (012)345-6789。
我有一系列的<div/>如下:
<div>.co.uk</div>
<div>.com</div>
<div>.gb.com</div>
<div>.uk.com</div>
<div>.net</div>
Run Code Online (Sandbox Code Playgroud)
如何选择只包含的div .co.uk,.com,.net.
如果我使用:
$('div:contains(".co.uk"), div:contains(".com"), div:contains(".net")`)
Run Code Online (Sandbox Code Playgroud)
这会导致选择.gb.com和.uk.comdiv.
我试图改变模糊按钮的CSS.我怀疑它可能是一个连接问题,但我无法弄清楚我做错了什么.这是我的代码......
HTML
<input type="text" value="blue" id="textinput">
<button>Button</button>
<span id="color">red</span>
Run Code Online (Sandbox Code Playgroud)
CSS
button {
background-color:blue;
background-image: -webkit-linear-gradient(top, white 0%, black 100%);
}
Run Code Online (Sandbox Code Playgroud)
jQuery的
$("#textinput").blur(function () {
setTimeout(function () {
endColor = $("#textinput").val();
$('button').css({
'background-color' : endColor
'background-image' : '-webkit-linear-gradient(top, #309ACB 0%,' + endColor + '100%)' });
}, 500);
});?
Run Code Online (Sandbox Code Playgroud)
FIDDLE LINK
http://jsfiddle.net/krishollenbeck/p2jah/20/
当我删除渐变CSS时,它工作正常.所以我猜我连接错误的变量.但是我尝试过多种方式,但似乎无法弄明白.这可能是非常明显的事情.
另请注意.我正在使用webkit渐变,因此在chrome或safari中进行测试.在此先感谢您的帮助.
我正在尝试转换JavaScript中以字节为单位表示的文件大小,如下所示(HTML 5).
function formatBytes(bytes)
{
var sizes = ['Bytes', 'kB', 'MB', 'GB', 'TB'];
if (bytes == 0)
{
return 'n/a';
}
var i = parseInt(Math.log(bytes) / Math.log(1024));
return Math.round(bytes / Math.pow(1024, i), 2) + sizes[i];
}
Run Code Online (Sandbox Code Playgroud)
但我需要以SI和二进制为单位表示文件大小,如果需要,
kB<--->KiB
MB<--->MiB
GB<--->GiB
TB<--->TiB
EB<--->EiB
Run Code Online (Sandbox Code Playgroud)
这可以在Java中完成,如下所示(对方法使用一个额外的布尔参数).
public static String formatBytes(long size, boolean si)
{
final int unitValue = si ? 1000 : 1024;
if (size < unitValue)
{
return size + " B";
}
int exp = (int) (Math.log(size) / Math.log(unitValue));
String initLetter …Run Code Online (Sandbox Code Playgroud) 这不起作用,我无法弄明白为什么......
alert("milan {0}".format("djukic"));
Run Code Online (Sandbox Code Playgroud)
我的jquery版本是1.6.2.我尝试了一切,没有成功..
javascript ×10
jquery ×6
c# ×2
.net ×1
angularjs ×1
html-table ×1
inheritance ×1
printf ×1
prototype ×1
refactoring ×1
regex ×1
typescript ×1